Eval, funksjon

Gjelder for
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Du kan bruke Eval-funksjonen til å evaluere et uttrykk som resulterer i en tekststreng eller en numerisk verdi.

Du kan konstruere en streng og deretter sende den til Eval-funksjonen som om strengen faktisk var et uttrykk. Eval-funksjonen evaluerer strenguttrykket og returnerer verdien. Returnerer Eval("1 + 1") for eksempel 2.

Hvis du sender en streng som inneholder navnet på en funksjon, til Eval-funksjonen , returnerer Eval-funksjonen returverdien for funksjonen. Returnerer for eksempel Eval("Chr$(65)") "A".

Syntaks

Eval(stringexpr)

Argumentet stringexpr er et uttrykk som evalueres til en alfanumerisk tekststreng. stringexpr kan for eksempel være en funksjon som returnerer en streng eller en numerisk verdi. Eller det kan være en referanse til en kontroll på et skjema. Argumentet stringexpr må evalueres til en streng eller numerisk verdi. den kan ikke evalueres til et Microsoft Access-objekt.

Obs!

I eksemplene nedenfor vises bruken av denne funksjonen i en VBA-modul (Visual Basic for Applications). Hvis du vil ha mer informasjon om hvordan du arbeider med VBA, velger du Utviklerreferanse fra rullegardinlisten ved siden av Søk og skriver inn ett eller flere søkeord i søkeboksen.

Obs!

Hvis du sender navnet på en funksjon til Eval-funksjonen , må du ta med parenteser etter navnet på funksjonen i stringexpr-argumentet . Eksempel:

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

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

Debug.Print Eval("Date()")

Merknader

Du kan bruke Evaluering-funksjonen i en beregnet kontroll i et skjema eller en rapport, eller i en makro eller modul. Eval-funksjonen returnerer en variant som er enten en streng eller en numerisk type.

Argumentet stringexpr må være et uttrykk som er lagret i en streng. Hvis du sender en streng som ikke inneholder et numerisk uttrykk eller et funksjonsnavn, men bare en enkel tekststreng, til Eval-funksjonen , oppstår det en kjøretidsfeil. Fører for eksempel Eval("Smith") til en feil.

Du kan bruke Eval-funksjonen til å bestemme verdien som er lagret i Verdi-egenskapen for en kontroll. Følgende eksempel sender en streng som inneholder en fullstendig referanse til en kontroll, til Evaluering-funksjonen . Den viser deretter gjeldende verdi for kontrollen 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 bruke Eval-funksjonen til å få tilgang til uttrykksoperatorer som vanligvis ikke er tilgjengelige i en VBA-modul (Visual Basic for Applications). Du kan for eksempel ikke bruke SQL-operatorene Mellom... Og eller direkte i koden, men du kan bruke dem i et uttrykk sendt til Eval-funksjonen .

Det neste eksemplet fastslår om verdien til en Skip/område-kontroll i et Ordreskjema er én av flere spesifiserte tilstandsforkortelser. Hvis feltet inneholder en av forkortelsene, intState blir den Sann (–1). Merk at du bruker enkle anførselstegn (') til å inkludere en streng i en annen streng.

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

Eksempler på spørringer

Uttrykk Resultater
SELECT Eval("15+3") AS Expr1 FROM ProductSales GROUP BY Eval("15+3"); Evaluerer strengverdien og beregner resultatet. Resultat: 18.
SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())"); Evaluerer strengverdien, identifiserer funksjonene og utfører dem. Resultat: gjeldende systemdato + gjeldende måned, vises i kolonnen "Ny dato".

VBA-eksempler

Følgende eksempel forutsetter at du har en serie med 50 funksjoner definert som A1, A2 og så videre. Dette eksemplet bruker Eval-funksjonen til å kalle opp hver funksjon i rekken.

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

Det neste eksemplet utløser en Klikk-hendelse som om brukeren har klikket på en knapp på et skjema. Hvis verdien av knappens OnClick-egenskap begynner med et likhetstegn (=), som betyr at det er navnet på en funksjon, kaller Eval-funksjonen funksjonen, som tilsvarer å utløse Click-hendelsen . Hvis verdien ikke begynner med et likhetstegn, må verdien gi navn til en makro. RunMacro-metoden for DoCmd-objektet kjører den navngitte makroen.

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