Eval İşlevi

Uygulandığı Öğe
Microsoft 365 için Access Access 2024 Access 2021 Access 2019 Access 2016

Metin dizesi veya sayısal değerle sonuçlanan bir ifadeyi değerlendirmek için Eval işlevini kullanabilirsiniz.

Bir dize oluşturabilir ve ardından dize gerçek bir ifadeymiş gibi Eval işlevine geçirebilirsiniz. Eval işlevi dize ifadesini değerlendirir ve değerini döndürür. Örneğin, Eval("1 + 1") 2 döndürür.

Eval işlevine işlevin adını içeren bir dize geçirirseniz, Eval işlevi işlevin sonuç değerini verir. Örneğin, Eval("Chr$(65)") "A" döndürür.

Söz dizimi

Eval(stringexpr)

stringexpr bağımsız değişkeni, alfasayısal bir metin dizesi olarak hesaplanan bir ifadedir. Örneğin, stringexpr bir dize veya sayısal değer döndüren bir işlev olabilir. Formdaki bir denetime başvuru da olabilir. stringexpr bağımsız değişkeni bir dize veya sayısal değer olarak değerlendirilmelidir; bir Microsoft Access nesnesi olarak değerlendirilemez.

Not

Aşağıdaki örneklerde, bu işlevin Visual Basic for Applications (VBA) modülünde kullanımı gösterilir. VBA ile çalışma hakkında daha fazla bilgi için, rama'nın yanındaki açılan listede Geliştirici Başvurusu'nu seçin ve arama kutusuna bir veya birden çok terim yazın.

Not

İşlevin adını Eval işlevine geçiriyorsanız, stringexpr bağımsız değişkeninde işlevin adından sonra parantez eklemeniz gerekir. Örneğin:

' ShowNames is user-defined function.
Debug.Print Eval("ShowNames()")   

Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")

Debug.Print Eval("Date()")

Notlar

Eval işlevini bir form veya rapordaki hesaplanan denetimde ya da bir makro veya modülde kullanabilirsiniz. Eval işlevi, bir dize veya sayısal tür olan bir Variant döndürür.

stringexpr bağımsız değişkeni, dizede depolanan bir ifade olmalıdır. Eval işlevine sayısal bir ifade veya işlev adı içermeyen, yalnızca basit bir metin dizesi içeren bir dize geçirirseniz, bir çalıştırma hatası oluşur. Örneğin, Eval("Smith") bir hataya yol açar.

Bir denetimin Value özelliğinde depolanan değeri saptamak için Eval işlevini kullanabilirsiniz. Aşağıdaki örnek, Eval işlevine yönelik bir denetime tam başvuru içeren bir dize geçirir. Ardından, denetimin geçerli değerini bir iletişim kutusunda görüntüler.

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))

Bir Visual Basic for Applications Visual Basic for Applications (VBA) modülünde normalde bulunmayan ifade işleçlerine erişmek için Eval işlevini kullanabilirsiniz. Örneğin, SQL işleçlerini Arasında kullanamazsınız... And or In doğrudan kodunuzda, ancak bunları Eval işlevine geçirilen bir ifadede kullanabilirsiniz.

Sıradaki örnek, Siparişler formundaki SevkiyatBölgesi denetiminin değerinin belirtilen birkaç durum kısaltmasından biri olup olmadığını belirler. Alan aşağıdaki kısaltmalardan birini içeriyorsa, intStateDoğru (–1) olur. Bir dizeyi başka bir dize içine eklemek için tek tırnak işareti (') kullandığınızı unutmayın.

Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _
    & "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")

Sorgu örnekleri

İfade Sonuçlar
SELECT Eval("15+3") AS Expr1 FROM ProductSales GROUP BY Eval("15+3"); Dize değerini değerlendirir ve sonucu hesaplar. Sonuç: 18.
SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())"); Dize değerini değerlendirir, işlevleri tanımlar ve yürütür. Sonuç: "YeniTarih" sütununda görüntülenen geçerli sistem tarihi + geçerli ay.

VBA örnekleri

Aşağıdaki örnekte A1, A2, vb. olarak tanımlanan 50 işlevden oluşan bir seriniz olduğu varsayılmaktadır. Bu örnek, serideki her işlevi çağırmak için Eval işlevini kullanır.

Sub CallSeries()
    Dim intI As Integer
    For intI = 1 To 50
        Eval("A" & intI & "()")
    Next intI
End Sub

Sonraki örnekte, kullanıcı formdaki bir düğmeye tıklamış gibi bir Click olayı tetiklenir. Düğmenin OnClick özelliğinin değeri, bunun bir işlevin adı olduğunu belirten bir eşittir işaretiyle (=) başlıyorsa, Eval işlevi işlevi çağırır ve bu, Click olayını tetiklemeye eşdeğerdir. Değer eşittir işaretiyle başlamıyorsa, değerin bir makroyu adlandırması gerekir. DoCmd nesnesinin RunMacro yöntemi, adlandırılmış makroyu çalıştırır.

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