Applies ToAccess لـ 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 ControlDim strCtl As StringSet ctl = Forms!Employees!LastNamestrCtl = "Forms!Employees!LastName"MsgBox ("The current value of " & ctl.Name & _    " is " & Eval(strCtl))

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

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

Dim intState As IntegerintState = 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 intIEnd Sub

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

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

هل تحتاج إلى مزيد من المساعدة؟

الخروج من الخيارات إضافية؟

استكشف مزايا الاشتراك، واستعرض الدورات التدريبية، وتعرف على كيفية تأمين جهازك، والمزيد.

تساعدك المجتمعات على طرح الأسئلة والإجابة عليها، وتقديم الملاحظات، وسماعها من الخبراء ذوي الاطلاع الواسع.