U kunt de functie Eval gebruiken om een expressie te evalueren die resulteert in een tekenreeks of een numerieke waarde.
U kunt een tekenreeks samenstellen en deze vervolgens doorgeven aan de functie Eval alsof de tekenreeks een expressie is. De functie Eval evalueert de reeksexpressie en retourneert het resultaat. Eval("1 + 1") geeft bijvoorbeeld 2 als resultaat.
Als u aan de functie Eval een tekenreeks doorgeeft die de naam van een functie bevat, geeft Eval de retourwaarde van de functie als resultaat. Eval("Chr$(65)") geeft bijvoorbeeld 'A' als resultaat.
Syntaxis
Eval ( tekenreeksexpressie )
Het argument stringexpr is een expressie die resulteert in een alfanumerieke tekenreeks. Stringexpr kan bijvoorbeeld een functie zijn die een tekenreeks of een numerieke waarde retourneert. Het kan ook een verwijzing zijn naar een besturingselement op een formulier. Het argument stringexpr moet een tekenreeks of numerieke waarde opleveren. het kan niet worden geëvalueerd naar een Microsoft Access-object.
Opmerking: In de volgende voorbeelden wordt het gebruik van deze functie in een VBA-module (Visual Basic for Applications) toegelicht. Meer informatie over het werken met VBA vindt u door in de vervolgkeuzelijst naast Zoeken de optie Referentie voor ontwikkelaars te selecteren en een of meer termen in het zoekvenster te typen.
Opmerking: Als u de naam van een functie doorgeeft aan de functie Eval, moet u haakjes toevoegen na de naam van de functie in het argument tekenreeksexpressie. Bijvoorbeeld:
' ShowNames is user-defined function.
Debug.Print Eval("ShowNames()")
Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")
Debug.Print Eval("Date()")
Opmerkingen
U kunt de functie Eval gebruiken in een berekend besturingselement in een formulier of rapport, of in een macro of module. De functie Eval retourneert een waarde van het type Variant die bestaat uit een tekenreeks of een numerieke waarde.
Het argument tekenreeksexpressie moet een expressie zijn die is opgeslagen in een tekenreeks. Als u de functie Eval doorgeeft aan een tekenreeks die geen numerieke expressie of een functienaam bevat maar alleen een eenvoudige tekenreeks, treedt er een runtimefout op. De tekenreeks Eval("Smith") veroorzaakt bijvoorbeeld een fout.
U kunt de functie Eval gebruiken om de waarde op te vragen die is opgeslagen in de eigenschap Value van een besturingselement. In het volgende voorbeeld wordt een tekenreeks met een volledige verwijzing naar een besturingselement doorgegeven aan de functie Eval. Het resultaat is dat de huidige waarde van het besturingselement wordt weergegeven in een dialoogvenster.
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))
U kunt de functie Eval gebruiken om toegang te krijgen tot expressie-operatoren die anders niet beschikbaar zijn in een VBA-module (Visual Basic for Applications). Zo kunt u de SQL-operatoren Between...And of In niet rechtstreeks in code gebruiken, maar u kunt ze wel gebruiken in een expressie die wordt doorgegeven aan de functie Eval.
In het volgende voorbeeld wordt gekeken of de waarde van een besturingselement ShipRegion in het formulier Orders overeenkomt met een van de verschillende statuscodes. Als het veld een van de codes bevat, wordt intState ingesteld op True (-1). U moet enkele aanhalingstekens (') gebruiken als u een tekenreeks binnen een andere tekenreeks wilt plaatsen.
Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _ & "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")
Queryvoorbeelden
Expression |
Resultaten |
SELECT Eval("15+3") AS Expr1 FROM ProductVerkoop GROUP BY Eval("15+3"); |
Evalueert de tekenreekswaarde en berekent het resultaat. Resultaat: 18. |
SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())"); |
Evalueert de tekenreekswaarde, identificeert de functies en voert deze uit. Resultaat: huidige systeemdatum + huidige maand, weergegeven in de kolom 'NewDate'. |
VBA-voorbeelden
In het volgende voorbeeld wordt ervan uitgegaan dat u een reeks van 50 functies hebt gedefinieerd met namen zoals A1, A2, enzovoort. In dit voorbeeld wordt de functie Eval gebruikt om elke functie in de reeks aan te roepen.
Sub CallSeries()
Dim intI As Integer For intI = 1 To 50 Eval("A" & intI & "()") Next intI End Sub
In het volgende voorbeeld wordt een gebeurtenis Click geactiveerd alsof een gebruiker op een knop in een formulier heeft geklikt. Als de waarde van de eigenschap OnClick van de knop begint met een gelijkteken (=), wat aangeeft dat het de naam van een functie is, wordt de functie aangeroepen door Eval, wat overeenkomt met het activeren van de gebeurtenis Click. Als de waarde niet met een gelijkteken begint, is de waarde de naam van een macro. De macro met die naam wordt dan uitgevoerd via de methode RunMacro van het DoCmd-object.
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