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