Funkciju Eval možete da koristite za procenu izraz koja kao rezultat 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 Evalizraz niske vrednost. Na primer, Eval("1 + 1") 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 kontrola u obrascu. Argument stringexpr mora da ima nisku ili numeričku vrednost; ne može da proceni rezultat u 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čunata kontrola 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, greška izazvana tokom izvršavanja pojavljuje. Na primer, Eval("Smith") kao rezultat dobija grešku.
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, 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