Applies ToMicrosoft 365 için Access Access 2024 Access 2021 Access 2019 Access 2016

Bir metin dizesi veya sayısal değerle sonuçlayan bir ifade 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. Değerlendirme işlevi dize ifadesi değerlendirir ve değerini döndürür. Örneğin, Eval("1 + 1") 2 döndürür.

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

Söz dizimi

Eval ( stringexpr )

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

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: Bir işlevin adını Eval işlevine geçiriyorsanız, stringexpr bağımsız değişkenine işlevin adından sonra parantezler eklemeniz gerekir. Örneğin:

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

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

Debug.Print Eval("Date()")

Açıklamalar

Eval işlevini bir form veya rapordaki hesaplanmış denetim ya da makro ya da modülde kullanabilirsiniz. Değerlendirme işlevi, dize veya sayısal tür olan bir Değişken döndürür.

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

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

Dim ctl As ControlDim strCtl As StringSet ctl = Forms!Employees!LastNamestrCtl = "Forms!Employees!LastName"MsgBox ("The current value of " & ctl.Name & _    " is " & Eval(strCtl))

Normalde bir Visual Basic for Applications (VBA) modülünde bulunmayan ifade işleçlerine erişmek için Eval işlevini kullanabilirsiniz. Örneğin, sql işleçlerini kullanamazsınız . Ve veya In doğrudan kodunuz içinde, ancak bunları Eval işlevine geçirilen bir ifadede kullanabilirsiniz.

Sonraki örnek, Siparişler formundaki ShipRegion denetiminin değerinin belirtilen çeşitli durum kısaltmalarından biri olup olmadığını belirler. Alanda kısaltmalardan biri varsa, intStateTrue (–1) olur. Başka bir dizeye dize eklemek için tek tırnak işareti (') kullandığınızı unutmayın.

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

Sorgu örnekleri

Expression

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ılı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 intIEnd Sub

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

Dim ctl As ControlDim varTemp As VariantSet ctl = Forms!Contacts!HelpButtonIf (Left(ctl.OnClick, 1) = "=") Then    varTemp = Eval(Mid(ctl.OnClick,2))Else    DoCmd.RunMacro ctl.OnClickEnd If

Daha fazla yardıma mı ihtiyacınız var?

Daha fazla seçenek mi istiyorsunuz?

Abonelik avantajlarını keşfedin, eğitim kurslarına göz atın, cihazınızın güvenliğini nasıl sağlayacağınızı öğrenin ve daha fazlasını yapın.

Topluluklar, soru sormanıza ve soruları yanıtlamanıza, geri bildirimde bulunmanıza ve zengin bilgiye sahip uzmanlardan bilgi almanıza yardımcı olur.