Funktsioon Eval

Rakenduskoht
Microsoft 365 rakendus Access Access 2024 Access 2021 Access 2019 Access 2016

Funktsiooni Eval abil saate hinnata avaldist, mis annab tulemiks tekstistringi või arvväärtuse.

Soovi korral saate koostada stringi ja seejärel edastada funktsioonile Eval stringi tegeliku avaldisena. Funktsioon Eval hindab stringiavaldist ja tagastab selle väärtuse. Näiteks Eval("1 + 1") tagastab väärtuse 2.

Kui edastate funktsioonile Eval funktsiooni nime sisaldava stringi, tagastab funktsioon Eval funktsiooni tagastusväärtuse. Näiteks Eval("Chr$(65)") tagastab väärtuse "A".

Süntaks

Eval(stringexpr)

Argument stringexpr on avaldis, mis annab tulemiks tärgilise tekstistringi. Stringexpr võib olla näiteks funktsioon, mis tagastab stringi või arvväärtuse. Samuti võib see olla viide vormi juhtelemendile. Argument stringexpr peab olema väärtustatav stringi- või arvväärtusena; see ei saa hinnata Microsoft Accessi objektiks.

Märkus.

Järgmised näited kujutavad selle funktsiooni kasutamist rakenduse Visual Basic for Applications (VBA) moodulis. Lisateabe saamiseks VBA-ga töötamise kohta valige välja Otsing kõrval kuvatavast ripploendist väärtus Tootearendusmaterjal ja sisestage otsinguväljale üks või mitu sõna.

Märkus.

Kui edastate funktsioonile Eval funktsiooni nime, tuleb argumendis stringexpr kaasata funktsiooni nime järele sulud. Siin on mõned näited.

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

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

Debug.Print Eval("Date()")

Kommentaarid

Funktsiooni Eval saate kasutada vormi või aruande arvutatud juhtelemendis või makros või moodulis. Funktsioon Eval tagastab variandi, mis on string või arvutüüp.

Argument stringexpr peab olema stringis talletatud avaldis. Kui edastate funktsioonile Eval stringi, mis ei sisalda arvulist avaldist ega funktsiooni nime, vaid ainult lihtsat tekstistringi, ilmneb käitusaja tõrge. Näiteks Eval("Smith") annab tulemiks vea.

Funktsiooni Eval abil saate määratleda juhtelemendi atribuudis Value talletatud väärtuse. Järgnevas näites edastatakse funktsioonile Eval juhtelemendi täielikku viidet sisaldav string. Selle tulemusel kuvatakse dialoogiboksis juhtelemendi praegune väärtus.

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

Funktsiooni Eval abil pääsete juurde ka nendele avaldise tehtemärkidele, mis muidu pole VBA-moodulis saadaval. Näiteks SQL-tehtemärke Between...And ja In ei saa kasutada koodis, kuid soovi korral saate neid kasutada funktsioonile Eval edastatavas avaldises.

Järgmises näites tehakse kindlaks, kas vormi Tellimused juhtelemendi väärtus Tarnepiirkond on üks määratud riikide lühenditest. Kui väli sisaldab ühte lühenditest, intState on see Tõene (–1). Ärge unustage stringis sisalduvat stringi panna ühekordsetesse jutumärkidesse (').

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

Päringu näited

Avaldis Tulemid
SELECT Eval("15+3") AS Avaldis1 FROM ProductSales GROUP BY Eval("15+3"); Hindab stringi väärtust ja arvutab tulemi. Tulem: 18.
SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())"); Hindab stringi väärtust, tuvastab funktsioonid ja käivitab need. Tulem: praegune süsteemikuupäev + praegune kuu, mis kuvatakse veerus "Uuskuupäev".

VBA näited

Järgmises näites eeldatakse, et teil on 50 funktsioonist koosnev sari, kus funktsioonide tähistused on A1, A2 jne. Näites kasutatakse funktsiooni Eval kõigi sarja kuuluvate funktsioonide kutsumiseks.

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

Järgmises näites käivitatakse klõpsamissündmus, justnagu kasutaja oleks klõpsanud vormil mõnda nuppu. Kui nupu atribuudi OnClick väärtus algab võrdusmärgiga (=), viidates, et tegemist on funktsiooni nimega, kutsub Eval funktsioon klõpsamissündmusele vastava funktsiooni. Kui väärtus ei alga võrdusmärgiga, peab väärtus sisaldama makro nime. Objekti DoCmd meetod RunMacro käivitab nimetatud 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