خمس طرق للبحث عن البيانات ، و مختلف الإستعمالات مع مشاريع مرفقة (5/5)
التصفية ( الفلترة) Filter :
كثيرا ما يمر معنا هذا المنهج في برنامج أو غيره ، فهو معروف نظرا لاستخدامه المتعدد . و بقي لنـا تعريف استخدامه (بالدلفي ) .
إن هذا المنهج ضروري جدا في تحديد معطيات معينة من جدول البيانات و فرزها ، و لا يكاد يستغني عنها أي مبرمج و مستعمل لقواعد البيانات ( خصوصا كل مبتدأ أو من لا يستخدم أو لا يجيد لغة الإستفسار أو الإستعلام البنيوية ) .
- نبدأ مشروعا جديد ، و مع نفس الجدول الذي مر معنا مسبقــا :
(Code_Produit - Produit - Qut - Fournisseur)
نضيف العناصر : Table - DataSource - DbGrid - DBNavigator و نصيف زرين : نكتب على الأول الكابشن : Filtered-True و الآخر Filtered-False .
نربط العناصر كالمعتاد.
- الآن نريد أن نقوم بعملية الفرز على اسم منتج (Produit) معين . أول شيء أود الإشارة إلى خاصيتي الفرز الخاصتين بالعنصر Table و هما : Filter - Filtered
أما فلترد : فهي قيمة بوليانية نريد من خلالها تفعيل الفرز أو لا.
و الثانية خاصة بكتابة صيغة الفرز و هو الأهم. و تأخد القيمة :
( اسم الحقل='القيمة النصية للحقل' ) مثلا نريد الفرز على الحقل
Produit إذا كانت قيمته :
HDD_80G نكتب القيمة : ثم نقوم بتفعيل الفلترة باعطاء القيمة True . هذا أثناء التصميم (من قسم الخصائص). كما يمكن التفعيل أو التعطيل برمجيا : نكتب على الزر الأول :
كود :
Table1.Filtered:=True;
و الثاني False
- ننفد البرنامج و نجرب الضغط على الزرين .
--- انظر المرفق1-----
- إذا أردنا الفلترة على حقل الكمية مثلا :
يعني التصفية حول كل منتوج تساوي كميته 50. إذا أردنا أكبر أو أصغر من قيمة 50 ، نفس الكود مع استبدال = بــ < أو >
- إذا أردنا نفس العمل برمجيا (Filtered-Filter) نترك القيم فارغة بالخصائص ، و نكتب على كودسورس الزر الأول :
كود :
table1.Filter:='Qut<' + '50' ;
Table1.Filtered:=True ;
أو عمل = بدلا من > مثلا.
- و إذا أردنا نفس الشيء مع ترك الخيار للمستخدم بادخال القيم المناسبة ، نعم زر و Edit ، و على كود سورس الزر نكتب :
كود :
table1.Filter:='Qut<' + Edit1.text ;
Table1.Filtered:=True ;
--- كل هذا مع القيم العددية ، أما القيم النصية (برمجيا) فلا بد من التابع QuotedStr .
و يقوم هذا التابع بإعادة نفس القيمة النصية مع و ضع إشارتين للحصر ، فقولك مثلا
كود :
QuotedStr(Edit1.text)=[COLOR=Red]'[/COLOR](Edit1.text)[COLOR=Red]'[/COLOR]
و بما أن الــ Edit هو قيمة نصية ، يكافئ:
كود :
QuotedStr(Edit1.text)=[COLOR=Red]''[/COLOR]HDD_80G[COLOR=Red]''[/COLOR]
كل هذا الكلام يشمل الفرز برمجيـــا ، أما أثناء التصميم (الخواص) فنكتب الكود كما مر معنا دون الحاجة إلى الحصر (QuotedStr).
- و على هذا الأساس إذا أردنا الفلترة عن القيمة النصية HDD_80G الخاصة بالحقل Produit ، برمجيا ، فنكتب على الزر كود سورس :
كود :
table1.Filter:=[B][COLOR=Blue]'[/COLOR][/B] Produit= [COLOR=Red][B]''[/B][/COLOR]HDD_80G[COLOR=Red][B]''[/B][/COLOR] [COLOR=Blue][B]'[/B][/COLOR] ;
table1.Filtered:=true;
باللون الأزرق : القيمة النصية
باللون الأحمر : القيمة النصية+الحصر يعني استخدام التابع المذكور.
- كما يمكن (على ما سلف شرحه) استعمال الكود :
كود :
table1.Filter:=[COLOR=Blue]'[/COLOR] Produit=[COLOR=Blue]'[/COLOR]+[COLOR=Red]Quotedstr[/COLOR]([COLOR=Blue]'[/COLOR]HDD_80G[COLOR=Blue]'[/COLOR]) ;
table1.Filtered:=true;
- كما يمكن استبدال (
'HDD_80G
') بـــ Edit1.text لتحرير القيم اختياريا.
آسف ، أردت إدراج مرفقات أخرى ، لكن بعد هذا التفصيل في الشرح ، أرى أنه لا داعي لذلك.
...../ يتبع /.....