Funkciu Eval môžete použiť na vyhodnotenie výrazu, 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 vyhodnotí reťazcový výraz a vráti jeho hodnotu. Vráti napríklad Eval("1 + 1") hodnotu 2.
Ak do funkcie Eval zadáte reťazec, ktorý obsahuje názov funkcie, funkcia Eval vráti vrátenú hodnotu funkcie. Vráti napríklad Eval("Chr$(65)") hodnotu A.
Syntax
Eval(reťazecvýraz)
Argument reťazecvýrazu je výraz, ktorý sa vyhodnotí ako alfanumerický textový reťazec. Reťazecvýrazu 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 reťazecvýrazu musí byť vyhodnotený ako reťazec alebo číselná hodnota. súbor sa nemôže vyhodnotiť ako objekt programu Microsoft Access.
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 odovzdávate názov funkcie funkcii do funkcie Eval , musíte za názvom funkcie pridať zátvorky v argumente reťazecvýraz . 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ť vo vypočítavanom ovládacom prvku vo formulári alebo zostave, v makre alebo module. Funkcia Eval vráti hodnotu typu Variant, ktorá je reťazcového alebo numerického typu.
Argument reťazecvýrazu 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, počas spúšťania sa vyskytne chyba. Výsledkom môže byť napríklad Eval("Smith") chyba.
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 dotazov
| 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 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