Funktionen Eval

Gælder for
Access til Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Du kan bruge funktionen Eval til at evaluere et udtryk, der resulterer i en tekststreng eller en numerisk værdi.

Du kan oprette en streng og derefter videregive den til funktionen Eval, som om strengen var et faktisk udtryk. Funktionen Eval evaluerer strengudtrykket og returnerer dets værdi. Returnerer f.eks Eval("1 + 1") . 2.

Hvis du videregiver en streng, der indeholder navnet på en funktion, til funktionen Eval, returnerer funktionen Eval funktionens returværdi. Returnerer f.eks Eval("Chr$(65)") . "A".

Syntaks

Eval(stringexpr)

Argumentet strengudtryk er et udtryk, der evalueres til en alfanumerisk tekststreng. Eksempelvis kan strengudseere være en funktion, der returnerer en streng eller en numerisk værdi. Eller det kan være en reference til et kontrolelement i en formular. Argumentet strengudtryk skal evalueres til en streng eller numerisk værdi. Det kan ikke evalueres til et Microsoft Access-objekt.

Bemærk

Følgende eksempler demonstrerer brugen af denne funktion i et VBA-modul (Visual Basic for Applications). Hvis du vil have mere at vide om at arbejde med VBA, skal du vælge Udviklerreference på rullelisten ud for Søg og skrive ét eller flere ord i søgefeltet.

Bemærk

Hvis du videregiver navnet på en funktion til funktionen Eval , skal du medtage parenteser efter navnet på funktionen i argumentet strengudtryk . Det kunne f.eks. være:

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

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

Debug.Print Eval("Date()")

Bemærkninger

Du kan bruge funktionen Eval i et beregnet kontrolelement i en formular eller rapport eller i en makro eller et modul. Funktionen Eval returnerer en Variant, der enten er en streng eller en numerisk type.

Argumentet strengudtryk skal være et udtryk, der er gemt i en streng. Hvis du videregiver en streng, der ikke indeholder et numerisk udtryk eller et funktionsnavn, men kun en simpel tekststreng, til funktionen Eval , opstår der en kørselsfejl. Resulterer f.eks Eval("Smith") . i en fejl.

Du kan bruge funktionen Eval til at bestemme den værdi, der lagres i egenskaben Værdi for et kontrolelement. I følgende eksempel videregives en streng, der indeholder en fuld reference til et kontrolelement, til funktionen Eval. Derefter vises den aktuelle værdi af kontrolelementet i en dialogboks.

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

Du kan bruge funktionen Eval til at få adgang til operatorer, der ikke normalt er tilgængelige i et VBA-modul (Visual Basic for Applications). Eksempelvis kan du ikke bruge SQL-operatorerne Between...And eller In direkte i din kode, men du kan bruge dem i et udtryk, der videregives til funktionen Eval.

Det næste eksempel bestemmer, om værdien af kontrolelementet Modtagerområde i en ordreformular er en af flere angivne forkortelser for stater. Hvis feltet indeholder en af forkortelserne, intState er sand (-1). Bemærk, at du bruger enkelte anførselstegn (') til at medtage en streng i en anden tekststreng.

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

Forespørgselseksempler

Udtryk Resultater
SELECT Eval("15+3") AS Expr1 FROM ProductSales GROUP BY Eval("15+3"); Evaluerer strengværdien og beregner resultatet. Resultat: 18.
SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())"); Evaluerer strengværdien, identificerer funktionerne og udfører dem. Resultat: aktuel systemdato + aktuel måned, vist i kolonnen "NewDate".

VBA-eksempler

I følgende eksempel forudsættes det, at du har en serie af 50 funktioner defineret som A1, A2 og så videre. I dette eksempel bruges funktionen Eval til at kalde hver funktion i serien.

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

Det næste eksempel udløser en Klik-hændelse , som om brugeren havde klikket på en knap i en formular. Hvis værdien af knappens OnClick-egenskab begynder med et lighedstegn (=), der angiver, at det er navnet på en funktion, kalder funktionen Eval funktionen, hvilket svarer til at udløse klikhændelsen . Hvis værdien ikke starter med et lighedstegn, skal værdien navngive en makro. Metoden KørMakro for objektet DoCmd kører den navngivne 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