È possibile usare la funzione Eval per valutare un'espressione che restituisce una stringa di testo o un valore numerico.
È possibile creare una stringa e quindi passarla alla funzione Eval come se fosse effettivamente un'espressione. La funzione Eval valuta l'espressione stringa e ne restituisce il valore. Ad esempio, Eval("1 + 1") restituisce 2.
Se si passa alla funzione Eval un stringa contenente il nome di una funzione, la funzione Eval restituisce il valore restituito della funzione. Ad esempio, Eval("Chr$(65)") restituisce "A".
Sintassi
Eval ( esprstringa )
L'argomento esprstringa è un'espressione che restituisce una stringa di testo alfanumerica. Ad esempio, esprstringa può essere una funzione che restituisce una stringa o un valore numerico. In alternativa, può essere un riferimento a un controllo in una maschera. L'argomento esprstringa deve restituire una stringa o un valore numerico e non può restituire un oggetto di Microsoft Access.
Nota: Gli esempi seguenti illustrano l'uso di questa funzione in un modulo di Visual Basic, Applications Edition (VBA). Per altre informazioni sull'uso di VBA, selezionare Riferimenti per sviluppatori nell'elenco a discesa accanto a Cerca e immettere uno o più termini nella casella di ricerca.
Nota: Se si passa il nome di una funzione alla funzione Eval, è necessario includere parentesi dopo il nome della funzione nell'argomento esprstringa. Ad esempio:
' ShowNames is user-defined function.
Debug.Print Eval("ShowNames()")
Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")
Debug.Print Eval("Date()")
Osservazioni
È possibile usare la funzione Eval in un controllo calcolato in una maschera o un report oppure in una macro o un modulo. La funzione Eval restituisce un valore Variant che è una stringa o un tipo numerico.
L'argomento esprstringa deve essere un'espressione archiviata in una stringa. Se si passa alla funzione Eval una stringa che non contiene un'espressione numerica o un nome di funzione, ma solo una stringa di testo semplice, viene restituito un errore di run-time. Ad esempio, Eval("Smith") restituisce un errore.
È possibile usare la funzione Eval per determinare il valore archiviato nella proprietà Valore di un controllo. L'esempio seguente passa alla funzione Eval una stringa contenente un riferimento completo a un controllo. Visualizza quindi il valore corrente del controllo in una finestra di dialogo.
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))
È possibile usare la funzione Eval per accedere a operatori di espressione che non sono normalmente disponibili in un modulo di Visual Basic, Applications Edition (VBA). Ad esempio, non è possibile usare gli operatori SQL Between...And o In direttamente nel codice, ma è possibile usarli in un'espressione passata alla funzione Eval.
L'esempio seguente determina se il valore di un controllo ShipRegion in una maschera Orders è una delle diverse abbreviazioni di stato specificate. Se il campo contiene una delle abbreviazioni, intState conterrà True (-1). È necessario usare virgolette singole (') per racchiudere una stringa all'interno di un'altra stringa.
Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _ & "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")
Esempi di query
Espressione |
Risultati |
SELECT Eval("15+3") AS Expr1 FROM ProductSales GROUP BY Eval("15+3"); |
Valuta il valore stringa e calcola il risultato. Risultato: 18. |
SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())"); |
Valuta il valore stringa, identifica le funzioni ed eseguile. Risultato: data di sistema corrente + mese corrente, visualizzato nella colonna "NewDate". |
Esempi di VBA
L'esempio seguente presuppone una serie di 50 funzioni definite come A1, A2 e così via. Questo esempio usa la funzione Eval per chiamare ogni funzione nella serie.
Sub CallSeries()
Dim intI As Integer For intI = 1 To 50 Eval("A" & intI & "()") Next intI End Sub
L'esempio seguente attiva un evento Click come se l'utente avesse fatto clic su un pulsante in una maschera. Se il valore della proprietà .SuClic del pulsante inizia con un segno di uguale (=), specificando che è il nome di una funzione, la funzione Eval chiama la funzione e questa operazione equivale all'attivazione dell'evento Click. Se il valore non inizia con un segno di uguale, il valore deve denominare una macro. Il metodo RunMacro dell'oggetto DoCmd esegue la macro denominata.
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