بسم الله الرحمان الرحيم
السلام عليكم و رحمة الله تعالى و
بركاته .درس اليوم هو الجزء الثالث من سلسلة البحث في قواعد البيانات و هذا هو
الجزء الأخير من هذه السلسلة و في هذا الدرس سنتعرف على أفضل طريقة للبحث في قواعد
البيانات و هي الفلترة هذا مصلح باللغة الإنجليزية و معناه باللغة العربية التصفية
أو الترشيح حيث أننا نرى هذا النوع من البحث في كل مكان " في محركات البحث في
الهواتف النقالة " لذلك اخترت هذا النوع كأفضل طريقة للبحث و نبدأ على بركة
الله
يجب أن تقوم بما كنا نفعله دائما ألا و هو ربط قاعدة البيانات أكسس مع
الدلفي بالإضافة إلى : إضافة مكون edit و كتابة الأمر التالي في حدث OnChange المتعلق بهذا المكون :
var
nom:string;
begin
ADOTable1.Filter := '';
if (Edit1.Text) = '' then
exit ;
try
nom := QuotedStr (Edit1.Text + '*');
if (Edit1.Text <>
'') then
ADOTable1.Filter:=
Format('(nom LIKE %s)', [nom])
else
ADOTable1.Filtered :=
Trim((Edit1.Text)) <> '' ;
except
abort;
end;
end;
|
شرح مختصر للكود :
أولا قمنا بتعريف متغير nom من نوع string و بعدها بدأ الكود حيث أننا قمنا بجعل خاصية
التصفية filter تساوي نص فارغ و بعدها بدأت جملة الشرط و الشرط
هو إذا كان النص في أداة edit1 فارغ سينقذ الأمر التالي حيث بدأ الأمر بجملة try و هو ينتهي except و هذه الجملة تقوم بحماية الكود أي لن يحدث
الخطأ و الكود الذي بين هذه الجملة ينفذ و الكود المحمي هو المتغير nom يساوي النص الموجود في الأداة + * و بعدها تبدأ جملة شرط جديدة و هذه
الجملة هي إذا كان النص أقل أو أكبر من ''
يعني فارغة سينقذ الأمر التالي و الذي يحدد لنا كيفية و صيغة التصفية في الجدول adotable1 و نحن في هذا الكود سنبحث في الحقل nom و بعدها يأتي الاستثناء الذي يحدث في حال لم
يتحقق الشرط السابق و الاستثناء هو إذا لم
تجد أي نتائج مطابقة للبحث أجعل محتوى الجدول فارغ إذا كان هناك على الأقل حرف
مكتوب و الآن سيكون شكل البرنامج أثناء التصميم هكذا :
و عند كتابتك للحرف y في الأداة
أثناء التنفيذ سيكون البرنامج بالشكل التالي :
الآن سأقدم لكم الكود الذي يمكنكم من البحث في حقلين
لكن دون شرح :
أكتب الكود التالي في حدث OnChange للمكون edit1
var
nom, prénom:string;
begin
ADOTable1.Filter
if (Edit1.Text + edit2.Text)
= '' then exit
try
nom := QuotedStr (Edit1.Text+'*');
prenom := QuotedStr
(edit2.Text+'*')
if (Edit1.Text <> '')
AND (edit2.Text <> '') then
ADOTable1.Filter:=
Format('(nom LIKE %s) and (prénom LIKE %s)', [nom, prénom])
else
if (Edit1.Text <> '')
then
ADOTable1.Filter:=
Format('(nom LIKE %s)', [nom])
else
ADOTable1.Filter:=
Format('(prénom LIKE %s)', [prénom]);
ADOTable1.Filtered :=
Trim((Edit1.Text + edit2.Text))<>'';
except
abort;
end;
end;
|
و بعدها أكتب الكود التالي في حدث onEntrer للمكون edit2
Edit2.OnChange:=edit1.OnChange;
|
الآن انتهينا بحمد الله من هذه السلسلة أتمنى أن تكون
أفادتكم و ألقاكم في جديد الدروس و المقالات الحصرية فقط على مدونة تعلم دلفي و
دمتم في رعاية الله
و السلام
عليكم و رحمة الله تعالى و بركاته