Funkciju Eval var izmantot , lai novērtētu izteiksme, kura rezultātā rodas teksta virkne vai skaitliska vērtība.
Varat izveidot virkni un pēc tam nodot to funkcijai Eval tā, it kā virkne būtu īsta izteiksme. Funkcija Eval novērtē virknes izteiksme un atgriež tās vērtību. Piemēram, Eval("1 + 1") 2.
Ja Eval funkcijai tiek nodota virkne, kurā ir funkcijas nosaukums, funkcija Eval atgriež funkcijas atgriezto vērtību. Piemēram, Eval("Chr$(65)") "A".
Sintakse
Eval ( virknes_izteiksme )
Arguments virknes_izteiksme ir izteiksme, kas tiek novērtēta kā burtciparu teksta virkne. Piemēram, virknes_izteiksme var būt funkcija, kas atgriež virkni vai skaitlisku vērtību. Vai arī tā var būt atsauce uz vadīkla formu. Virknes_izteiksmes arguments ir jānovērtē kā virkne vai skaitliska vērtība; to nevar novērtēt kā Microsoft Access objekts.
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 funkcijas nosaukums tiek nodots Eval funkcijai, argumentā virknes_izteiksme jāiekļauj iekavas pēc funkcijas nosaukuma . 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 formā aprēķinātās vērtības vadīkla atskaitē vai makro vai modulī. Funkcija Eval atgriež Variant vērtību , kas ir virkne vai skaitlisks tips.
Argumenta virknes_izteiksmei jābūt izteiksmei, kas tiek glabāta virknē. Ja pārejat uz Eval funkciju virkni, kas nesatur skaitlisku izteiksmi vai funkcijas nosaukumu, bet ir tikai vienkārša teksta virkne, tiek izpildes laika kļūda virkne. Piemēram, Eval("Smith") rezultātā rodas kļūda.
Varat izmantot funkciju Eval , lai noteiktu vadīklas rekvizītā Value saglabāto vērtību. Šajā piemērā virkne, kurā ir pilna atsauce uz vadīklu, nodod funkcijai Eval . Pēc tam tas 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 Between... Un vai In tieši kodā, bet varat tos izmantot izteiksmē, kas nodota funkcijai Eval .
Nākamajā piemērā tiek noteikts, vai formas Pasūtījumi vadīklas Piegādes_reģions vērtība ir viens no vairākiem norādītajiem štatu saīsinājumiem. Ja laukā ir kāds no saīsinājumiem, intState būs True (–1). Ņemiet vērā, ka vienpēdiņās (') ir jāiekļauj virkne 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 izpilda tās. Rezultāts: pašreizējā sistēmas datums + pašreizējais mēnesis, kas parādīts kolonnā "Jaunais_datums". |
VBA piemēri
Šajā piemērā tiek pieņemts, ka jums ir 50 funkciju sērijas, 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 notikums Noklikšķiniet uz tā, it kā lietotājs veidlapā būtu noklikšķinājis uz pogas. Ja pogas rekvizīta OnClick vērtība sākas ar vienādības zīmi (=), norādot, ka tas ir funkcijas nosaukums, funkcija Eval izsauc funkciju, kas ir līdzvērtīga notikuma Click izsaukšanai. Ja vērtība nesākas ar vienādības zīmi, vērtībai ir jānosaukumā makro. Objekta DoCmd metode RunMacro izpilda nosaukto 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