Pomoću funkcije Eval možete procijeniti izraz koji rezultira tekstnim nizom ili brojčanom vrijednošću.
Možete stvoriti niz, a zatim ga proslijediti funkciji Eval kao da je niz stvarni izraz. Funkcija Eval procjenjuje vrijednost nizovni izraz vraća njezinu vrijednost. Na primjer, Eval("1 + 1") vraća 2.
Ako funkciji Eval proslijedite niz koji sadrži naziv funkcije, funkcija Eval vraća povratnu vrijednost funkcije. Na primjer, Eval("Chr$(65)") vraća "A".
Sintaksa
Eval ( stringexpr )
Argument stringexpr izraz je koji se vrednuje kao alfanumerički tekstni niz. Nizexpr, primjerice, može biti funkcija koja vraća niz ili brojčanu vrijednost. Ili može biti referenca na kontrola na obrascu. Argument stringexpr mora se vrednovati kao niz ili brojčana vrijednost; ne može se vrednovati kao objekt programa Microsoft Access.
Napomena: Primjeri koji slijede prikazuju korištenje te funkcije u modulu jezika Visual Basic for Applications (VBA). Da biste pronašli dodatne informacije o radu s VBA-om, na padajućem popisu uz stavku Traži odaberite stavku Referenca za razvojne inženjere pa unesite jedan ili više izraza u okvir pretraživanja.
Napomena: Ako funkciji Eval prelažete naziv funkcije, nakon naziva funkcije u argument stringexpr morate uvrstiti zagrade . Na primjer:
' 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 koristiti u izračunata kontrola na obrascu ili izvješću ili u makronaredbi ili modulu. Funkcija Eval vraća vrijednost Variant koja je niz ili brojčana vrsta.
Argument stringexpr mora biti izraz koji je pohranjen u nizu. Ako funkciji Eval proslijedite niz koji ne sadrži brojčani izraz ili naziv funkcije, ali samo jednostavan tekstni niz, pojavit će se pogreška pri izvođenju. Primjerice, Eval("Smith") rezultira pogreškom.
Pomoću funkcije Eval možete odrediti vrijednost pohranjenu u svojstvu Vrijednost kontrole. U sljedećem se primjeru niz koji sadrži potpunu referencu na kontrolu prosljeđuje funkciji Eval . Zatim prikazuje trenutnu vrijednost kontrole u dijaloškom okviru.
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))
Pomoću funkcije Eval možete pristupiti operatorima izraza koji nisu obično dostupni u modulu programa Visual Basic for Applications (VBA). Ne možete, primjerice, koristiti SQL operatore Između... A ili In izravno u kodu, ali ih možete koristiti u izrazu koji je proslijeđen funkciji Eval .
Sljedeći primjer određuje je li vrijednost kontrole ShipRegion na obrascu Narudžbe jedna od nekoliko navedenih skraćenica stanja. Ako polje sadrži jednu od skraćenica, intState true ( –1). Imajte na umu da koristite jednostruke navodnike (') da biste uvrstili niz unutar drugog niza.
Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _ & "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")
Primjeri upita
Izraz |
Rezultati |
SELECT Eval("15+3") AS Izraz1 IZ ProizvodaOdjela GROUP BY Eval("15+3"); |
Procjenjuje vrijednost niza i izračunava rezultat. Rezultat: 18. |
SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())"); |
Procjenjuje vrijednost niza, određuje funkcije i izvršava ih. Rezultat: trenutni datum sustava + trenutni mjesec, prikazan u stupcu "NoviDatum". |
Primjeri VBA-a
U sljedećem se primjeru pretpostavlja da imate niz od 50 funkcija definiranih kao A1, A2 i tako dalje. U ovom se primjeru koristi funkcija 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
Sljedeći primjer pokreće događaj Klik kao da je korisnik klikao gumb na obrascu. Ako vrijednost svojstva OnClick gumba počinje znakom jednakosti (=), što znači da je to naziv funkcije, funkcija Eval poziva funkciju, što je ekvivalentno aktivaciji događaja Klik . Ako vrijednost ne počinje znakom jednakosti, vrijednost mora dodijeliti naziv makronaredbi. Metoda RunMacro objekta DoCmd pokreće imenovanu makronaredbu.
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