إشترك

البحث في قواعد البيانات في الدلفي - الجزء الثاني -


بسم الله الرحمان الرحيم
السلام عليكم و رحمة الله تعالى و بركاته اليوم في درس اليوم سنتابع سلسلة دروس " البحث في قواعد البيانات " و اليوم سنتحدث  في الجزء الثاني أيضا عن أهم طرق البحث في قواعد البيانات و سنشرح الأكواد بالتفصيل و نبدأ على بركة الله  :
البحث باستخدام المنهج Lookup
 لا يقوم هذا المنهج بتغير مؤشر الفأرة عند إيجاد القيمة المطلوبة بل يحتفظ بها و يمكن استدعائها متى دعت الحاجة
مثال : قم بإضافة المكونات التالية adotable1 / datasource1 /adoconnection1 / dbgrid1/edit1 / button1   و بعدها قم بربط قاعدة البيانات كما شرحنا في درس سابق و الآن قم بكتابة الكود التالي في حدث onclic  للزر button1  
var LookupResult : Variant;
begin
lookupResult := adotable1.Lookup('N°',strtoint(edit1.Text ),'nom;prénom');
if Not VarIsnull( lookupResult) then
Showmessage(vartostr(lookupresult[0]) + '   ' + vartostr(lookupresult[1]));

شرح الكود :
  ·        أولا قمنا بالتصريح بالمتغير  LookupResult من النوع Variant
  ·        و بعدها قمنا بجعل قيمة المتغير تساوي قيمة البحث المطلوبة . 
  ·         و في هذا الكود يقوم المنهج Lookup بالبحث في adotable1 عن قيمة في حقل الرقم  N° " الرقم هو حقل من الجدول و هو الحقل "
  ·        و قيمة البحث هي النص الموجودة في edit1 
  ·         و قمنا بكتابة التابع strtoint لتحويل ما يوجد في الأداة من نص إلى رقم
  ·         أما الحقلان 'nom;prénom' فهما الحقلان اللذان سيظهر ما بداخلهما يعني إذا كان هناك خمسة أشخاص في الجدول و قمنا بالبحث عن صاحب الرقم 3 فلن يظهر لنا الرقم 3 بل سيظهر ما يقابله أي اسم و لقب الشخص في حالتنا هذه علمنا أنه يمكن تغير الحقلين 
  ·        و بعدها استخدمنا الجملة الشرطية if  not …then
  ·        و استخدمنا التابع VarIsnull لمعرفة هل المتحول يحتوي على قيمة أو لا
  ·        و إذا وجد القيمة ستظهر لنا في رسالة تحتوي على nom  و هو ذو القيمة 0  و prénom  ذو القيمة 1 
  ·        و استخدمنا أيضا التابع vartostr الذي يحول القيمة Variant إلى نص 
  ·        و أما ما يوجد بين هذين القيمتين  nom    و prénom  في الرسالة هو فراغ + '   ' +
·        الآن هذا هو البرنامج
 1-    صورة النموذج الأول  أثناء التصميم

 2-    صورة البرنامج أثناء التنفيذ

·        و لكن ماذا لو كنت تريد البحث عن الشخص عن طريق لقبه ...قم ببعض التغيرات على الكود السابق ليصبح هكذا
var LookupResult : Variant;
begin
lookupResult := adotable1.Lookup('nom',(edit1.Text ),'n°;prénom');
if Not VarIsnull( lookupResult) then
Showmessage(vartostr(lookupresult[0]) + '   ' + vartostr(lookupresult[1]));

قمنا بحذف التابع strtoint لأنه يحول القيمة من نص إلى رقم و نحن في هذه المرة نريد البحث عن نص لذلك استغنينا عنه و قمنا بتغير أسماء الحقول و في هذا المثال سنكتب لقب الشخص و سيظهر لنا رقمه و اسمه في الرسالة كما تبين الصورة

·        يمكن البحث في حقلين من نفس الجدول باستخدام الكود التالي :
var LookupResult : Variant;
begin
lookupResult := adotable1.Lookup('N°;prénom',VarArrayof
; ([strtoint(edit1.Text),Edit2.text]),'nom;prénom')
if Not VarIsnull( lookupResult) then
Showmessage(vartostr(lookupresult[0])+ '   ' + vartostr(lookupresult[1]));
و هذه هي صورة البرنامج بعد تطبيق الكود عليه و البحث فيه :

ألقاكم في الجزء الثالث من سلسلة " البحث في قواعد البيانات " في الدرس القادم بإذن الله
و السلام عليكم و رحمة الله تعالى و بركاته
  
جميع الحقوق محفوظة لــ تعلم دلفي بالعربية 2015 ©