Funkci Eval můžete použít k vyhodnocení výrazu, jehož výsledkem je textový řetězec nebo číselná hodnota.
Můžete vytvořit řetězec a pak jej předat funkci Eval , jako kdyby tento řetězec byl skutečným výrazem. Funkce Eval vyhodnotí řetězcový výraz a vrátí jeho hodnotu.
Eval("1 + 1") Například vrátí hodnotu 2.
Pokud funkci Eval předáte řetězec, který obsahuje název funkce, vrátí funkce Eval návratovou hodnotu funkce. Například Eval("Chr$(65)") vrátí "A".
Syntaxe
Vyhodnotit(stringexpr)
Argument stringexpr je výraz, jehož výsledkem je alfanumerický textový řetězec. Řetězcem může být například funkce, která vrací řetězec nebo číselnou hodnotu. Nebo to může být odkaz na ovládací prvek ve formuláři. Argument stringexpr musí být vyhodnocen jako řetězec nebo číselná hodnota. nemůže být vyhodnocen jako objekt Microsoft Accessu.
Poznámka
Následující příklady ukazují použití této funkce v modulu VBA (Visual Basic pro Applications). Pokud chcete další informace o práci s modulem VBA, vyberte Referenční informace pro vývojáře, které najdete v rozevíracím seznamu vedle položky Hledat a do vyhledávacího pole napište požadované pojmy.
Poznámka
Pokud předáváte název funkce funkci funkci Eval , musíte za název funkce v argumentu stringexpr přidat závorky. Příklady:
' ShowNames is user-defined function.
Debug.Print Eval("ShowNames()")
Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")
Debug.Print Eval("Date()")
Poznámky
Funkci Eval lze použít v počítaném ovládacím prvku ve formuláři nebo sestavě, případně v makru nebo modulu. Funkce Eval vrací hodnotu typu Variant s řetězcem nebo číselným typem.
Argumentem stringexpr musí být výraz, který je uložený v řetězci. Pokud funkci Eval předáte řetězec, který neobsahuje číselný výraz nebo název funkce, ale pouze jednoduchý textový řetězec, dojde k chybě za běhu. Výsledkem je například Eval("Smith") chyba.
Pomocí funkce Eval lze určit hodnotu uloženou ve vlastnosti Value ovládacího prvku. Následující příklad předává funkci Eval řetězec obsahující úplný odkaz na ovládací prvek. V dialogovém okně pak zobrazí aktuální hodnotu ovládacího prvku.
Dim ctl As Control
Dim strCtl As String
Set ctl = Forms!Employees!LastName
strCtl = "Forms!Employees!LastName"
MsgBox ("The current value of " & ctl.Name & _
" is " & Eval(strCtl))
Funkci Eval můžete použít pro přístup k operátorům výrazů, které nejsou běžně dostupné v modulu jazyk Visual Basic for Application (VBA). Nemůžete například použít operátory SQL Between ... And nebo In přímo v kódu, ale můžete je použít ve výrazu předaném funkci Eval .
Následující příklad určuje, zda hodnota ovládacího prvku OblastExpedice ve formuláři Objednávky odpovídá jedné z několika určených zkratek stavu. Pokud pole obsahuje některou ze zkratek, intState bude mít hodnotu True (-1). Všimněte si, že k vložení řetězce do jiného řetězce použijte jednoduché uvozovky (').
Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _
& "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")
Příklady dotazů
| Výraz | Výsledky: |
|---|---|
| SELECT Eval("15+3") AS Expr1 FROM ProductSales GROUP BY Eval("15+3"); | Vyhodnotí řetězcovou hodnotu a vypočítá výsledek. Výsledek: 18. |
| SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())"); | Vyhodnotí hodnotu řetězce, identifikuje funkce a provede je. Výsledek: aktuální systémové datum + aktuální měsíc, zobrazený ve sloupci "NewDate". |
Příklady jazyka VBA
Následující příklad předpokládá, že máte posloupnost 50 funkcí definovaných jako A1, A2 a tak dále. V tomto příkladu se funkce Eval používá k volání jednotlivých funkcí v řadě.
Sub CallSeries()
Dim intI As Integer
For intI = 1 To 50
Eval("A" & intI & "()")
Next intI
End Sub
Následující příklad aktivuje událost Click stejně, jako kdyby uživatel kliknul na tlačítko ve formuláři. Pokud hodnota vlastnosti tlačítka OnClick začíná znakem rovnítka (=), což znamená, že se jedná o název funkce, funkce Eval volá funkci, což je ekvivalentní aktivaci události Click . Pokud hodnota nezačíná symbolem rovná se, musí být hodnota pojmenována jako makro. Metoda RunMacro objektu DoCmd spustí pojmenované makro.
Dim ctl As Control
Dim varTemp As Variant
Set ctl = Forms!Contacts!HelpButton
If (Left(ctl.OnClick, 1) = "=") Then
varTemp = Eval(Mid(ctl.OnClick,2))
Else
DoCmd.RunMacro ctl.OnClick
End If