Funkcija Eval

Attiecas uz
Access pakalpojumam Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Varat izmantot funkciju Eval , lai novērtētu izteiksmi, kuras rezultātā rodas teksta virkne vai skaitliska vērtība.

Varat izveidot virkni un pēc tam to nodot funkcijai Eval tā, it kā virkne būtu faktiska izteiksme. Funkcija Eval novērtē virknes izteiksmi un atgriež tās vērtību. Piemēram, Eval("1 + 1") atgriež 2.

Ja funkcijai Eval nododat virkni, kurā ir funkcijas nosaukums, funkcija Eval atgriež funkcijas atgriezto vērtību. Piemēram, Eval("Chr$(65)") atgriež "A".

Sintakse

Eval(stringexpr)

Arguments stringexpr ir izteiksme, kas tiek novērtēta kā burtciparu teksta virkne. Piemēram, stringexpr var būt funkcija, kas atgriež virkni vai skaitlisku vērtību. Vai arī tā var būt atsauce uz formas vadīklu. Stringexpr arguments jānovērtē kā virknes vai skaitliska vērtība; to nevar novērtēt par Microsoft Access objektu.

Piezīme

Turpmākajos piemēros redzama šīs funkcijas izmantošana Visual Basic for Applications (VBA) modulī. Lai iegūtu papildinformāciju par darbu ar VBA, nolaižamajā sarakstā atlasiet Uzziņas materiāli izstrādātājiem blakus meklēšanas lodziņam un ievadiet šajā lodziņā vienu vai vairākus vārdus.

Piezīme

Ja nododat funkcijas nosaukumu funkcijai Eval , argumentā stringexpr pēc funkcijas nosaukuma ir jāiekļauj iekavas. Piemērs.

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

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

Debug.Print Eval("Date()")

Piezīmes

Funkciju Eval var izmantot aprēķinātā vadīklā formā vai atskaitē, makro vai modulī. Funkcija Eval atgriež Variant, kas ir virknes vai skaitļa tips.

Argumentam stringexpr ir jābūt izteiksmē, kas tiek glabāta virknē. Ja nododat funkcijai Eval virkni, kas nesatur skaitlisku izteiksmi vai funkcijas nosaukumu, bet tikai vienkāršu teksta virkni, rodas izpildlaika kļūda. Piemēram, Eval("Smith") rezultāts ir kļūda.

Varat izmantot funkciju Eval , lai noteiktu vērtību, kas tiek glabāta vadīklas rekvizītā Value . Šajā piemērā virkne, kurā ir pilna atsauce uz vadīklu, tiek nodota funkcijai Eval . Pēc tam tā dialoglodziņā parāda vadīklas pašreizējo vērtību.

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

Varat izmantot funkciju Eval , lai piekļūtu izteiksmju operatoriem, kas parasti nav pieejami Visual Basic for Applications (VBA) modulī. Piemēram, nevar izmantot SQL operatorus starp... Un vai In tieši kodā, bet varat tos izmantot izteiksmē, kas nodota funkcijai Eval .

Nākamajā piemērā tiek noteikts, vai vadīklas ShipRegion vērtība formā Orders ir viens no vairākiem norādītajiem stāvokļa saīsinājumiem. Ja laukā ir kāds no saīsinājumiem, intState tā vērtība būs True (–1). Ievērojiet, ka vienpēdiņas (') ir jāizmanto, lai virkni iekļautu citā virknē.

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

Vaicājumu piemēri

Izteiksme Rezultāti
SELECT Eval("15+3") AS Expr1 FROM ProductSales GROUP BY Eval("15+3"); Novērtē virknes vērtību un aprēķina rezultātu. Rezultāts: 18.
SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())"); Novērtē virknes vērtību, identificē funkcijas un tās izpilda. Rezultāts: pašreizējais sistēmas datums + pašreizējais mēnesis, parādīts kolonnā "Jauns_datums".

VBA piemēri

Nākamajā piemērā pieņemts, ka jums ir 50 funkciju sērija, kas definētas kā A1, A2 utt. Šajā piemērā izmantota funkcija Eval , lai izsauktu katru sērijas funkciju.

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

Nākamajā piemērā tiek aktivizēts klikšķa notikums tā, it kā lietotājs būtu noklikšķinājis uz pogas formā. Ja pogas OnClick rekvizīta vērtība sākas ar vienādības zīmi (=), kas nozīmē, ka tā ir funkcijas nosaukums, funkcija Eval izsauc funkciju, kas ir ekvivalents Click notikuma aktivizēšanai. Ja vērtība nesākas ar vienādības zīmi, vērtībai ir jāpiešķir makro nosaukums. Nosaukto makro izpilda objekta DoCmd metode RunMacro.

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