Funkcija „Eval“

Primenjuje se na
Access za Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Funkciju Eval možete da koristite za procenu izraza koji daje tekstualnu nisku ili numeričku vrednost.

Nisku možete da konstruišete, a zatim da je dodate u funkciju Eval kao da je niska stvarni izraz. Funkcija Eval procenjuje izraz niske i vraća njegovu vrednost. Na primer, Eval("1 + 1") daje 2.

Ako funkciji Eval dodate nisku koja sadrži ime funkcije, funkcija Eval daje povratnu vrednost funkcije. Na primer, Eval("Chr$(65)") daje "A".

Sintaksa

Eval(stringexpr)

Argument stringexpr je izraz koji daje alfanumeričku tekstualnu nisku. Na primer, izraz niske može biti funkcija koja daje nisku ili numeričku vrednost. Ili to može da bude referenca na kontrolu u obrascu. Argument stringexpr mora da ima nisku ili numeričku vrednost; ne može da proceni Microsoft Access objekat.

Napomena

Primeri koji slede pokazuju upotrebu ove funkcije u Visual Basic for Applications (VBA) modulu. Za više informacija o radu sa VBA modulom izaberite stavku Referenca razvojnog programera sa padajuće liste pored stavke Pretraga i unesite termine u polje za pretragu.

Napomena

Ako funkciji Eval dodajete ime funkcije, u argument stringexpr morate da uključite zagrade posle imena funkcije . Na primer:

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

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

Debug.Print Eval("Date()")

Napomene

Funkciju Eval možete da koristite u izračunatoj kontroli u obrascu ili izveštaju ili u makrou ili modulu. Funkcija Eval vraća varijantu koja je niska ili numerički tip.

Izraz niske argumenta mora da bude izraz koji se skladišti u nisci. Ako funkciji Eval dodate nisku koja ne sadrži numerički izraz ili ime funkcije, već samo jednostavnu tekstualnu nisku, dolazi do greške u izvršavanju. Na primer, dobija Eval("Smith") se greška.

Možete da koristite funkciju Eval da biste utvrdili vrednost uskladištenu u svojstvu kontrole "Vrednost". Sledeći primer dodaje nisku koja sadrži punu referencu na kontrolu u funkciju Eval . Zatim prikazuje trenutnu vrednost kontrole u dijalogu.

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

Funkciju Eval možete da koristite za pristup operatorima izraza koji nisu obično dostupni u Visual Basic for Applications (VBA) modulu. Na primer, ne možete da koristite SQL operatore Between... I u programu In direktno u kodu, ali možete da ih koristite u izrazu koji je prosleđen funkciji Eval .

Sledeći primer određuje da li je vrednost kontrole "ShipRegion" u obrascu "Porudžbine" jedna od nekoliko navedenih skraćenica države. Ako polje sadrži jednu od skraćenica, biće intStatetačno ( –1). Imajte na umu da koristite jednostruke navodnike (') da biste uključili nisku u okviru druge niske.

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

Primeri upita

Izraz Rezultati
SELECT Eval("15+3") AS Izraz1 FROM ProductSales GROUP BY Eval("15+3"); Procenjuje vrednost niske i izračunava rezultat. Rezultat: 18.
SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())"); Procenjuje vrednost niske, identifikuje funkcije i izvršava ih. Rezultat: Trenutni sistemski datum + trenutni mesec, prikazan u koloni "NoviDatum".

VBA primeri

Sledeći primer pretpostavlja da imate niz od 50 funkcija definisanih kao A1, A2 i tako dalje. Ovaj primer koristi funkciju Eval za pozivanje svake funkcije u grupi.

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

Sledeći primer pokreće događaj Click kao da je korisnik kliknuo na dugme u obrascu. Ako vrednost svojstva OnClick dugmeta počinje znakom jednakosti (=), što ukazuje na to da je to ime funkcije, funkcija Eval poziva funkciju koja je jednaka aktiviranju događaja Click . Ako vrednost ne počinje znakom jednakosti, onda vrednost mora da imenuje makro. Metod RunMacro objekta DoCmd pokreće imenovani 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