Pomocou funkcie Eval môžete vyhodnotiť výraz, ktorého výsledkom je textový reťazec alebo číselná hodnota.
Môžete vytvoriť reťazec a potom ho zadať do funkcie Eval, ako keby bol tento reťazec skutočným výrazom. Funkcia Eval tento reťazcový výraz vyhodnotí a vráti jeho hodnotu. Napríklad funkcia Eval("1 + 1") vráti hodnotu 2.
Ak do funkcie Eval zadáte reťazec, ktorý obsahuje názov funkcie, funkcia Eval vráti vrátenú hodnotu funkcie. Napríklad funkcia Eval("Chr$(65)") vráti hodnotu A.
Syntax
Eval ( reťazecvýrazu )
Argument stringexpr je výraz, ktorý sa vyhodnotí ako alfanumerický textový reťazec. Argumentom stringexpr môže byť napríklad funkcia, ktorá vráti reťazec alebo číselnú hodnotu. Alebo to môže byť odkaz na ovládací prvok vo formulári. Argument stringexpr sa musí vyhodnotiť ako reťazec alebo číselná hodnota. nemôže vyhodnotiť na objekt Microsoft Accessu.
Poznámka: Nasledujúce príklady ukazujú použitie tejto funkcie v module jazyka Visual Basic for Applications (VBA). Ak chcete získať ďalšie informácie o práci s jazykom VBA, vyberte z rozbaľovacieho zoznamu vedľa položky Hľadať možnosť Odkaz pre vývojára a do vyhľadávacieho poľa zadajte nejaké výrazy.
Poznámka: Ak do funkcie Eval zadávate názov funkcie, v argumente je za názov funkcie potrebné zadať zátvorky. Príklad:
' ShowNames is user-defined function.
Debug.Print Eval("ShowNames()")
Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")
Debug.Print Eval("Date()")
Poznámky
Funkciu Eval môžete použiť v vypočítavaný ovládací prvok vo formulári alebo zostave, v makre alebo module. Funkcia Eval vráti variant, ktorý je buď reťazcom, alebo číselným typom.
Argument musí byť výraz, ktorý je uložený v reťazci. Ak do funkcie Eval zadáte reťazec, ktorý neobsahuje číselný výraz alebo názov funkcie, ale iba jednoduchý textový reťazec, vyskytne sa chyba počas spustenia. Napríklad funkcia Eval("Smith") spôsobí chybu.
Pomocou funkcie Eval môžete určiť hodnotu uloženú vo vlastnosti Value ovládacieho prvku. V nasledujúcom príklade je do funkcie Eval zadaný reťazec, ktorý obsahuje úplný odkaz na ovládací prvok. Funkcia potom zobrazí aktuálnu hodnotu ovládacieho prvku v dialógovom okne.
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))
Funkciu Eval môžete použiť na získanie prístupu k operátorom výrazov, ktoré nie sú bežne k dispozícii v module programu Visual Basic for Applications (VBA). Napríklad operátory SQL Between...And alebo In nemožno použiť priamo v kóde, môžete ich však použiť vo výraze zadanom do funkcie Eval.
Nasledujúci príklad určuje, či je hodnota ovládacieho prvku ShipRegion vo formulári Orders jednou z viacerých zadaných skratiek štátov. Ak pole obsahuje jednu zo skratiek, intState bude mať hodnotu True (–1). Všimnite si, že na zahrnutie reťazca do ďalšieho reťazca sa používajú jednoduché úvodzovky (').
Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _ & "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")
Príklady dotazu
Výraz |
Výsledky |
SELECT Eval("15+3") AS Expr1 FROM ProductSales GROUP BY Eval("15+3"); |
Vyhodnotí hodnotu reťazca a vypočíta výsledok. Výsledok: 18. |
SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())"); |
Vyhodnotí hodnotu reťazca, identifikuje funkcie a spustí ich. Výsledok: aktuálny systémový dátum + aktuálny mesiac, zobrazený v stĺpci NovýDátum. |
Príklady jazyka VBA
Nasledujúci príklad vychádza z predpokladu, že máte rad 50 funkcií definovaných ako A1, A2 atď. V tomto príklade je funkcia Eval použitá na vyvolanie jednotlivých funkcií v rade.
Sub CallSeries()
Dim intI As Integer For intI = 1 To 50 Eval("A" & intI & "()") Next intI End Sub
V nasledujúcom príklade sa spúšťa udalosť Kliknutie, ako keby používateľ klikol na tlačidlo vo formulári. Ak sa hodnota vlastnosti OnClick tlačidla začína znakom rovnosti (=), ktorý označuje, že ide o názov funkcie, funkcia Eval vyvolá funkciu, čo zodpovedá spusteniu udalosti Kliknutie. Ak sa hodnota nezačína znakom rovnosti, potom musí pomenúvať makro. Metóda RunMacro objektu DoCmd spúšťa pomenované 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