الدالة Eval

هام: تمت ترجمة هذه المقالة ترجمة آلية، راجع إقرار إخلاء المسؤولية. يرجى الاطلاع على النسخة الإنجليزية من هذه المقالة. هنا للرجوع إليها.

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

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

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

بناء الجملة

Eval ( سترينجيكسبر )

إن وسيطة 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 لتحديد القيمة المحفوظة في الخاصية القيمة الخاصة بعنصر تحكم. يمرر المثال التالي سلسلة أحرف تحتوي على مرجع كامل لعنصر تحكم إلى الدالة 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‎‏ Between...And أو In مباشرًة في التعليمة البرمجية الخاصة بك، ولكن يمكنك استخدامها في تعبير تم تمريرها إلى الدالة Eval.

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

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

مثال

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

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

يقوم هذا المثال بتشغيل الحدث Click وكأن المستخدم قد قام بالنقر فوق زر في النموذج. إذا كانت قيمة خاصة الزر عند_النقر تبدأ بعلامة يساوي (=)، مشيرة إلى أن ذلك هو اسم الدالة، تقوم الدالة 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

ملاحظة: إقرار إخلاء المسؤولية للترجمة الآلية: تمت ترجمة هذه المقالة بواسطة نظام كمبيوتر دون تدخل العامل البشري. توفر Microsoft هذه الترجمات الآلية لمساعدة المستخدمين الذين لا يتحدثون الإنجليزية على استخدام منتجات Microsoft، وخدماتها، وتقنياتها والاستمتاع بها. قد تحتوي هذه المقالة على أخطاء في المفردات، أو بناء الجملة، أو القواعد نظرًا لترجمتها آليًا.

مشاركة Facebook Facebook Twitter Twitter البريد الإلكتروني البريد الإلكتروني

هل كانت المعلومات مفيدة؟

رائع! هل لديك أي ملاحظات أخرى؟

كيف يمكننا تحسين ذلك؟

نشكرك على ملاحظاتك!

×