Az Eval függvény olyan kifejezések kiértékelésére használható, melyek szöveges karakterláncot vagy számértéket eredményeznek.
A létrehozott karakterláncokat tényleges kifejezésként adhatjuk át az Eval függvénynek. Az Eval függvény kiértékeli a karakterlánc-kifejezést, majd visszaadja annak értékét. Az Eval("1 + 1") eredménye például 2.
Ha az Eval függvénynek egy függvénynevet tartalmazó karakterláncot ad át, az Eval az adott függvény visszatérési értékét adja vissza. Az Eval("Chr$(65)") eredménye például „A”.
Szintaxis
Eval ( szöveg )
A stringexpr argumentum egy alfanumerikus szöveges sztringre kiértékelő kifejezés. A stringexpr függvény lehet például egy sztring vagy egy numerikus érték visszaadása. Vagy hivatkozhat egy űrlap vezérlő. A stringexpr argumentumnak sztring vagy numerikus értéknek kell lennie; nem tud kiértékelni Microsoft Access-objektum.
Megjegyzés: A következő példák egy Visual Basic for Applications (VBA) modulban mutatják be a függvény használatát. A VBA használatáról a Keresés elem mellett található legördülő listából a fejlesztői forrásokat választva, majd egy vagy több keresőszót megadva kaphat további tájékoztatást.
Megjegyzés: Ha egy függvény nevét adja át az Eval függvénynek, akkor a szöveg argumentumban a függvény után zárójelet kell írni. Például:
' ShowNames is user-defined function.
Debug.Print Eval("ShowNames()")
Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")
Debug.Print Eval("Date()")
Megjegyzések
Az Eval függvény használható az űrlapokon vagy jelentésekben szereplő számított vezérlőelemekben, illetve makrókban és modulokban is. Az Eval függvény karakterlánc vagy szám típusú Variant értéket ad vissza.
A szöveg argumentumnak karakterláncban tárolt kifejezésnek kell lennie. Ha az Eval függvénynek olyan karakterláncot ad át, amely nem tartalmaz numerikus kifejezést vagy függvénynevet, csak egyszerű szöveges karakterláncot, akkor futási idejű hiba lép fel. Hibát eredményez például a következő: Eval("Smith").
Az Eval függvénnyel megállapíthatja, hogy egy vezérlőelem Value tulajdonságában milyen érték van tárolva. Az alábbi példában egy olyan karakterláncot adunk át az Eval függvénynek, amely teljes hivatkozást tartalmaz egy vezérlőelemre. Ezután egy párbeszédpanelen megjeleníti a vezérlőelem aktuális értékét.
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))
Az Eval függvénnyel olyan kifejezésoperátorokhoz férhet hozzá, amelyek általában nem érhetők el egy Visual Basic for Applications (VBA) modulban. Például nem használhatja az SQL-operátorokat a következő között: ... És vagy Közvetlenül a kódban, de használhatja őket az Eval függvénynek átadott kifejezésben.
Az alábbi példában megállapíthatja, hogy a Rendelés űrlapon lévő SzállításiTerület vezérlőelem értéke megegyezik-e a megadott államrövidítések egyikével. Ha a mező tartalmazza az egyik rövidítést, akkor az intState értéke Igaz (-1) lesz. A karakterláncon belüli karakterláncokat aposztróffal (’) kell jelölni.
Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _ & "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")
Példák lekérdezésre
Expression |
Eredmények |
SELECT Eval("15+3") AS Expr1 FROM ProductSales GROUP BY Eval("15+3"); |
Kiértékeli a sztring értékét, és kiszámítja az eredményt. Eredmény: 18. |
SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())"); |
Kiértékeli a sztring értékét, azonosítja a függvényeket, és végrehajtja őket. Eredmény: aktuális rendszerdátum + aktuális hónap, az "ÚjDátum" oszlopban jelenik meg. |
VBA-példák
Az alábbi példa feltételezi, hogy van 50 függvény, melyek neve A1, A2 stb. A példa az Eval függvényt használja a sorozat függvényeinek meghívására.
Sub CallSeries()
Dim intI As Integer For intI = 1 To 50 Eval("A" & intI & "()") Next intI End Sub
A következő példát követve indítson el egy Click eseményt, mintha a felhasználó rákattintott volna egy gombra egy űrlapon. Ha a gomb OnClick tulajdonságának értéke egyenlőségjellel (=) kezdődik – ami azt jelenti, hogy egy függvény neve –, akkor az Eval függvény meghívja a függvényt, ami ugyanaz, mint a Click esemény indítása. Ha az érték nem egyenlőségjellel kezdődik, akkor az érték makrót nevez meg. A DoCmd objektum MakróFuttatása metódusa lefuttatja a megnevezett makrót.
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