Funkcija Eval

Velja za
Access za Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

S funkcijo Eval lahko ovrednotite izraz, katerega rezultat je besedilni niz ali številska vrednost.

Ustvarite lahko niz in ga nato podate v funkcijo Eval, kot bi bil niz dejanski izraz. Funkcija Eval ovrednoti izraz niza in vrne njegovo vrednost. Vrne na primer Eval("1 + 1") 2.

Če v funkcijo Eval podate niz, ki vsebuje ime funkcije, funkcija Eval vrne vrnjeno vrednost funkcije. Vrne na primer Eval("Chr$(65)") »A«.

Sintaksa

Eval(stringexpr)

Argument stringexpr je izraz, ki se ovrednoti kot alfanumerični besedilni niz. Stringexpr je lahko na primer funkcija, ki vrne niz ali številsko vrednost. Ali pa je lahko sklic na kontrolnik v obrazcu. Argument stringexpr mora biti ovrednoten kot niz ali številska vrednost; ne more se ovrednotiti v Microsoft Accessovem predmetu.

Opomba

V spodnjih primerih je prikazana uporaba te funkcije v modulu Visual Basic for Applications (VBA). Če želite več informacij o delu z modulom VBA, izberite Vsebina za razvijalce na spustnem seznamu ob možnosti Iskanje in v iskalno polje vnesite enega ali več izrazov.

Opomba

Če posredujete ime funkcije funkciji funkciji Eval , morate za imenom funkcije v argumentu stringexpr vključiti oklepaje. Primer:

' ShowNames is user-defined function.
Debug.Print Eval("ShowNames()")   

Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")

Debug.Print Eval("Date()")

Opombe

Funkcijo Eval lahko uporabite v izračunanem kontrolniku v obrazcu ali poročilu ali v makru ali modulu. Funkcija Eval vrne Variant, ki je niz ali številski tip.

Argument stringexpr mora biti izraz, ki je shranjen v nizu. Če funkciji Eval posredujete niz, ki ne vsebuje številskega izraza ali imena funkcije, ampak le preprost besedilni niz, pride do napake med izvajanjem. Na primer, Eval("Smith") povzroči napako.

Funkcijo Eval lahko uporabite za določanje vrednosti, shranjene v lastnosti Value za kontrolnik. V spodnjem primeru je podan niz, ki vsebuje popoln sklic na kontrolnik v funkciji Eval. Nato se prikaže vrednost kontrolnika v pogovornem oknu.

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))

Funkcijo Eval lahko uporabite za dostop do operatorjev izraza, ki niso običajno na voljo v modulu Visual Basic for Applications (VBA). Na primer, operatorjev SQL Between...And ali In ne morete uporabiti neposredno v kodi, vendar jih lahko uporabite v izrazu, podanem v funkciji Eval.

V naslednjem primeru se ugotavlja, ali je vrednost kontrolnika ShipRegion v obrazcu »Naročila« ena od več določenih kratic držav. Če polje vsebuje eno od okrajšav intState , bo True (–1). Pri vključevanju niza v drug niz ne pozabite uporabiti enojnih narekovajev (').

Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _
    & "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")

Primeri poizvedb

Izraz Rezultati
SELECT Eval("15+3") AS Expr1 FROM ProductSales GROUP BY Eval("15+3"); Ovrednoti vrednost niza in izračuna rezultat. Rezultat: 18.
SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())"); Ovrednoti vrednost niza, identificira funkcije in jih izvede. Rezultat: trenutni sistemski datum + trenutni mesec, prikazan v stolpcu »NewDate«.

Primeri VBA

Naslednji primer predvideva, da imate niz 50 funkcij, določenih kot A1, A2 in tako naprej. Ta primer uporablja funkcijo Eval za priklic vseh funkcij v nizu.

Sub CallSeries()
    Dim intI As Integer
    For intI = 1 To 50
        Eval("A" & intI & "()")
    Next intI
End Sub

Naslednji primer sproži dogodek Click, kot bi uporabnik kliknil gumb v obrazcu. Če se vrednost lastnosti OnClick gumba začne z enačajem (=), ki označuje, da gre za ime funkcije, funkcija Eval prikliče funkcijo, ki je enaka sproženju dogodka Click. Če se vrednost ne začne z enačajem, mora vrednost imenovati makro. Metoda RunMacro predmeta DoCmd zažene imenovani 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