السلام عليكم معاشر الطلبة ، الدرس موجه للمبتدئين والمتوسطين إليكم الدرس:
إستعمال المعامل Like؟
-------------------------------------------------------------------------------------------------------------------------------------------------------
1- فائدة المعامل Like :
لو أردت صنع برنامج يتأكد من أن إسم المستخدم يحتوى على كلمة (عبد) ، مثل : عبد الله ، عبد الرحمن ، عبدالعزيز فماذا ستفعل؟ توجد أكثر من طريقة في فيجوال بيسك وأسهل هذه الطرق إستعمال المعامل Like .
لو كان لدى شركة ما موديلات يتم ترقيمها كالآتي (ثلاث أرقام_نوع البضاعة_mc) مثل الموديلات التالية : mc_mobile_745 ، mc_phone_581
وعندما يدخل العامل في هذه الشركة رقم الموديل يجب أن يطابق الصيغة السابقة ، فما هو الكود الذي ستستعمله لهذا الغرض؟
لو أردت أن تتأكد من أن القيمة التي ادخلها المستخدم لا تحتوي على الرمز $ ، فماذا ستفعل؟؟
---------------------------------------------------------------2- إليكم شرح المعامل Like ----------------------------------------------------------
يقوم هذا المعامل بالمقارنة بين قيمة ما وبين الصيغة التي يكتبها المبرمج بالطريقة التالية:
( صيغة البيانات المرادة Like قيمة التي تريد التحقق من طريقة كتابتها )
ويعود هذه المعامل بعد المقارنة بقيمتين منطقيتين هما True صحيح ، أو False خاطئ
وقبل الأمثلة لا بد أن تعرف أننا نستخدم ثلاث رموز لبناء صيغة البيانات ، حيث أن الرمز * يعني صفر أو أكثر من الحروف ، والرمز ؟ يعني حرف واحد فقط ، والرمز # لرقم واحد فقط
وبالمثال يتضح المقال
المثال 1 : برنامج يتأكد من أن إسم المستخدم يحتوي على كلمة عبد أو لا؟
أدرج مربع نص الذي ستتم كتابة إسم المتسخدم بداخله وأجعل إسمه Text1 ، وأدرج زر أوامر ثم أنقر عليه مرتين لكتابة الكود في الأسفل
Dim blnIsAbd As Boolean
blnIsAbd = Text1.Text Like "*عبد*"
If blnIsAbd = True Then
MsgBox ("إسمك يحتوي على كلمة عبد" & vbCr & "إسمك " & Text1.Text)
ElseIf blnIsAbd = False Then
MsgBox ("إسمك لا يحتوي على كلمة عبد" & vbCr & "إسمك " & Text1.Text)
End Ifشرح الكود :
السطر 1: يحجز متغير في الذاكرة نوعه منطقي Boolean ، أي أنه لا يقبل سوى قيمتين فقط True و False
2: جعلنا قيمة المتغير تساوي نتيجة المقارنة التي سيعود بها المعامل Like ، وكما تلاحظ عن يسار المعامل يوجد النص الي نريد التحقق من أنه مطابق للصيغة التي نريدها
وعند يمين المعامل الصيغة التي نريدها ، الصيغة كانت "*عبد*" ومعناها : إذا كان قبل الكلمة عبد صفر أو أكثر من الحروف وكان بعد الكلمة عبد صفر أو أكثر من الحروف فأجعل نتيجة
المقارنة True و إذا كان العكس فاجعل قيمة المقارنة False
السطور الباقية : نتحقق من قيمة المتغير blnIsAbd بواسطة التركيب If.....end if ، ويمكنك أيضا إستعمال Select Case وهو أقصر من التركيب السابق
، فإذا كانت قيمة المعامل True تظهر رسالة مفادها إسمك يحتوي على كلمة عبد ، العكس صحيح
قيم تعود بTrue مع المعامل لايك مثل : "عبدالله" ،"محمد عبد الرحمن" ، "للعبدوووعيل"
؟؟ لماذا القيمة الأخيرة تعود بناتج صحيح مع المعامل لايك؟؟ لأن قبل وبعد عبد حرف أو أكثر ، ما الحل؟شغل مخك، والعرض من المثال السابق كيفية التعامل مع المعامل Like
مثال 2 : التحقق من أن طريقة كتابة رقم الموديل مطابقة للصيغة (ثلاث أرقام_نوع البضاعة_mc)
أدرج مربع نص الذي ستتم كتابة رقم الموديل بداخله وأجعل إسمه Text1 ، وأدرج زر أوامر ثم أنقر عليه مرتين واكتب الكود التالي
Dim blnIsModel As Boolean
blnIsModel = Text1.Text Like "mc_*_###"
Select Case blnIsModel
Case True
MsgBox ("رقم موديل صحيح")
Case False
MsgBox ("رقم الموديل خاطئ")
End Select
المثال 3 : نريد التحقق من أن القيمة التي أدخلها المستخدم لا تحتوي على رمز $ ، لدينا طريقتين الأولى مشابهة للمثال الأول ، أما الثانية وهي الأهم فهي كما يلي:
أدرج مربع نص وزر أوامر وأنقر على زر الأوامر مرتين واكتب الكود التالي في حدث النقر الخاص بالزر
Dim blnIsD As Boolean blnIsD = "$" Like "[" & Text1.Text & "]" MsgBox (blnIsD
)
أنظر إلى السطر الثاني ولاحظ أننا وضعنا قيمة مربع النص بين قوسين مربعين [ ] وجعلنا الرمز الذي نريد التأكد من وجوده أو خلوه يسار المعامل Like .
وهذه حالة خاصة وشرحها الوافي هو: إذا كان الحرف الموجود يسار المعامل يشبه أي حرف بين قوسين مربعين في يمين المعامل ، فإن التعبير كله سيكون صحيحا . والأقواس في هذه الحالة تتيح لك معرفة إن كان هناك حرف معين موجود بين عدة حروف أم لا.
الأمثلة مرفقة
انتهى الدرس ووفق الله الجميع لما يحبه ويرضاه

