الدالة Eval

ينطبق على
Access لـ Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

يمكنك استخدام الدالة Eval لتقييم تعبير ينتج عنه سلسلة نصية أو قيمة رقمية.

يمكنك إنشاء سلسلة ثم تمريرها إلى الدالة Eval كما لو كانت السلسلة تعبيرا فعليا. تقيم الدالة Eval تعبير السلسلة وترجع قيمتها. على سبيل المثال، Eval("1 + 1") ترجع 2.

إذا مررت سلسلة تحتوي على اسم الدالة إلى الدالة Eval ، فترجع الدالة Eval القيمة المرجعة للدالة. على سبيل المثال، Eval("Chr$(65)") ترجع "A".

بناء الجملة

Eval(stringexpr)

إن وسيطة stringexpr عبارة عن تعبير يتم تقييمه إلى سلسلة نصية أبجدية رقمية. على سبيل المثال، يمكن أن تكون stringexpr عبارة عن دالة ترجع سلسلة أو قيمة رقمية. أو قد تكون مرجعا إلى عنصر تحكم في نموذج. يجب تقييم وسيطة stringexpr إلى سلسلة أو قيمة رقمية؛ لا يمكن تقييمه إلى عنصر Microsoft Access.

ملاحظة

توضح الأمثلة التالية استخدام هذه الدالة في وحدة نمطية ل Visual Basic for Applications (VBA). لمزيد من المعلومات حول استخدام VBA، حدد "مرجع المطور" في القائمة المنسدلة بجوار "بحث" وأدخل مصطلح أو أكثر في مربع البحث.

ملاحظة

إذا كنت تقوم بتمرير اسم دالة إلى الدالة Eval ، فيجب تضمين أقواس بعد اسم الدالة في وسيطة StringExpr . على سبيل المثال:

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

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

Debug.Print Eval("Date()")

ملاحظات

يمكنك استخدام الدالة Eval في عنصر تحكم محسوب على نموذج أو تقرير، أو في ماكرو أو وحدة نمطية. ترجع الدالة Eval متغيرا إما سلسلة أو من النوع الرقمي.

يجب أن تكون سلسلة الوسيطة Stringexpr تعبيرا مخزنا في سلسلة. إذا قمت بتمرير سلسلة إلى الدالة Eval لا تحتوي على تعبير رقمي أو اسم دالة ولكن فقط سلسلة نصية بسيطة، يحدث خطأ في وقت التشغيل. على سبيل المثال، Eval("Smith") يؤدي ذلك إلى حدوث خطأ.

يمكنك استخدام الدالة Eval لتحديد القيمة المخزنة في خاصية Value لعنصر تحكم. يمرر المثال التالي سلسلة تحتوي على مرجع كامل إلى عنصر تحكم للدالة Eval . عندئذ تعرض القيمة الحالية لعنصر التحكم في مربع حوار.

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

يمكنك استخدام الدالة Eval للوصول إلى عوامل تشغيل التعبيرات التي لا تتوفر عادة في وحدة نمطية ل Visual Basic for Applications (VBA). على سبيل المثال، لا يمكنك استخدام عوامل تشغيل SQL بين... And or In مباشرة في التعليمات البرمجية، ولكن يمكنك استخدامها في تعبير يتم تمريره إلى الدالة Eval .

يحدد المثال التالي ما إذا كانت قيمة عنصر تحكم منطقة الشحن في نموذج الطلبات واحدة من اختصارات الحالات المتعددة المحددة. إذا كان الحقل يحتوي على أحد الاختصارات، intState فسيكون True (1-). تجدر الإشارة إلى أنك تستخدم علامات اقتباس مفردة (') لتضمين سلسلة ضمن سلسلة أخرى.

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

أمثلة عن الاستعلام

التعبير النتائج
SELECT Eval("15+3") AS Expr1 FROM ProductSales GROUP BY Eval("15+3"); تقييم قيمة السلسلة وحساب النتيجة. النتيجة: 18.
SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())"); تقييم قيمة السلسلة وتعريف الدالات وتنفيذها. النتيجة: تاريخ النظام الحالي + الشهر الحالي، يتم عرضه في العمود "NewDate".

أمثلة VBA

يفترض المثال التالي أن لديك سلسلة من 50 دالة معرفة على أنها A1 وA2 وغير ذلك. يستخدم هذا المثال الدالة Eval لاستدعاء كل دالة في السلسلة.

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

يقوم المثال التالي بتشغيل حدث نقر كما لو أن المستخدم قد نقر فوق زر في نموذج. إذا كانت قيمة خاصية OnClick الخاصة بالزر تبدأ بعلامة التساوي (=)، مما يعني أنها اسم الدالة، فإن الدالة Eval تستدعي الدالة، التي تعادل تشغيل الحدث Click . إذا لم تبدأ القيمة بعلامة التساوي، فيجب أن تسمى القيمة ماكرو. يقوم الأسلوب RunMacro للعنصر DoCmd بتشغيل الماكرو المسمى.

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