Funkciju Eval možete koristiti za procjenu izraza čiji je rezultat tekstni niz ili brojčana vrijednost.
Možete sastaviti niz i zatim ga proslijediti funkciji Eval kao da je niz stvarni izraz. Funkcija Eval procjenjuje izraz niza i vraća njegovu vrijednost. Na primjer, Eval("1 + 1") vraća 2.
Ako funkciji Eval proslijedite niz koji sadrži naziv funkcije, funkcija Eval vraća vrijednost funkcije. Na primjer, Eval("Chr$(65)") vraća "A".
Sintaksa
Eval(stringexpr)
Argument stringexpr izraz je koji daje alfanumerički tekstni niz. Na primjer, stringexpr može biti funkcija koja vraća niz ili brojčanu vrijednost. Ili to može biti referenca na kontrolu na obrascu. Argument stringexpr mora biti vrednovan kao niz ili brojčana vrijednost; ne može se procijeniti 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 naziv funkcije prosljeđujete funkciji Eval , morate upisati zagrade nakon naziva funkcije u argumentu stringepr . 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 kontroli izračuna na obrascu ili izvješću ili pak u makronaredbi ili modulu. Funkcija Eval vraća vrijednost Variant koja je nizovna ili brojčana vrsta.
Argument stringexpr mora biti izraz pohranjen u nizu. Ako funkciji Eval prosljeđujete niz koji ne sadrži brojčani izraz ni naziv funkcije, već samo jednostavan tekstni niz, doći će do pogreške pri izvođenju. Na primjer, Eval("Smith") rezultira pogreškom.
Funkciju Eval možete koristiti za određivanje vrijednosti koja je spremljena u svojstvu Value kontrole. U sljedećem primjeru funkciju Eval prosljeđuje se niz koji sadrži punu referencu na kontrolu. Zatim u dijaloškom okviru prikazuje trenutnu vrijednost kontrole.
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 za pristup operatorima izraza koji nisu obično dostupni u modulu Visual Basic for Applications (VBA). Ne možete, primjerice, koristiti SQL operatore između... I ili In izravno u kodu, no možete ih koristiti u izrazu proslijeđenom u funkciju Eval .
U sljedećem se primjeru utvrđuje je li vrijednost kontrole PodručjeOtpreme na obrascu Narudžbe jedna od nekoliko navedenih kratica stanja. Ako polje sadrži jednu od kratica, intState bit će True (–1). Imajte na umu da koristite jednostruke navodnike (') da biste niz uvrstili 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 FROM ProdajaProizvoda 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, identificira funkcije i izvršava ih. Rezultat: trenutni datum sustava + trenutni mjesec, prikazano u stupcu "NoviDatum". |
Primjeri VBA kodova
U sljedećem se primjeru pretpostavlja da imate niz od 50 funkcija definiranih kao A1, A2 itd. U primjeru se pomoću funkcije Eval pozivaju sve funkcije u nizu.
Sub CallSeries()
Dim intI As Integer
For intI = 1 To 50
Eval("A" & intI & "()")
Next intI
End Sub
U sljedećem se primjeru pokreće događaj klik kao da je korisnik kliknuo gumb na obrascu. Ako vrijednost svojstva OnClick za gumb počinje znakom jednakosti (=), što znači da je riječ o nazivu funkcije, funkcija Eval poziva funkciju, što je istovjetno pokretanju događaja Klik. Ako vrijednost ne počinje znakom jednakosti, vrijednost mora imenovati makronaredbu. 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