Funkciju Eval možete da koristite za procenu izraza koji kao rezultat daje tekstualnu nisku ili numeričku vrednost.
Možete da konstruišete nisku, a zatim da je prosledite u funkciju Eval kao da je niska stvarni izraz. Funkcija Eval procenjuje izraz niske i vraća njenu vrednost. Na primer, Eval("1 + 1") daje 2.
Ako funkciji Eval prosledite nisku koja sadrži ime funkcije, funkcija Eval vraća rezultat funkcije. Na primer, Eval("Chr$(65)") daje "A".
Sintaksa
Eval(stringexpr)
Argument stringexpr je izraz koji kao rezultat daje alfanumeričku tekstualnu nisku. Na primer, stringexpr može da bude funkcija koja vraća nisku ili numeričku vrednost. Odnosno, može da bude referenca na kontrolu u obrascu. Argument stringexpr mora da prevede nisku ili numeričku vrednost; ne može da se proceni kao 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 prosleđujete ime funkcije funkciji Eval , morate da stavite zagrade iza imena funkcije u argumentu stringepr . 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.
Argument stringexpr mora da bude izraz koji je uskladišten u nisci. Ako funkciji Eval prosledite nisku koja ne sadrži numerički izraz ili ime funkcije, već samo jednostavnu tekstualnu nisku, dobija se greška tokom izvršavanja. Na primer, Eval("Smith") dovodi do greške.
Funkciju Eval možete da koristite da biste odredili vrednost koja je uskladištena u svojstvu kontrole "Value ". Sledeći primer prosleđuje nisku koja sadrži punu referencu za 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 koristiti da biste pristupili operatorima izraza koji obično nisu dostupni u Visual Basic for Applications (VBA) modulu. Na primer, ne možete da koristite SQL operatore između... And ili 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 "RegionOtpreme" u obrascu "Porudžbine" jedna od nekoliko navedenih skraćenica države. Ako polje sadrži jednu od skraćenica, intState imaće vrednost True (–1). Imajte na umu da koristite jednostruke navodnike (') za uključivanje niske u drugu nisku.
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 Expr1 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 + tekući mesec, prikazano 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 nizu.
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 znači da je to ime funkcije, funkcija Eval poziva funkciju, što je ekvivalentno pokretanju događaja Click . Ako vrednost ne počinje znakom jednakosti, onda vrednost mora imenovati 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