تعاريف و أمثلة بسيطة حول ق البيانات و ربط جدول بالدلفي،و بعض العمليات عليه/-1
#16
خمس طرق للبحث عن البيانات ، و مختلف الإستعمالات مع مشاريع مرفقة (5/5)

التصفية ( الفلترة) Filter :

كثيرا ما يمر معنا هذا المنهج في برنامج أو غيره ، فهو معروف نظرا لاستخدامه المتعدد . و بقي لنـا تعريف استخدامه (بالدلفي ) .
إن هذا المنهج ضروري جدا في تحديد معطيات معينة من جدول البيانات و فرزها ، و لا يكاد يستغني عنها أي مبرمج و مستعمل لقواعد البيانات ( خصوصا كل مبتدأ أو من لا يستخدم أو لا يجيد لغة الإستفسار أو الإستعلام البنيوية ) .

- نبدأ مشروعا جديد ، و مع نفس الجدول الذي مر معنا مسبقــا :
(Code_Produit - Produit - Qut - Fournisseur)
نضيف العناصر : Table - DataSource - DbGrid - DBNavigator و نصيف زرين : نكتب على الأول الكابشن : Filtered-True و الآخر Filtered-False .
نربط العناصر كالمعتاد.

- الآن نريد أن نقوم بعملية الفرز على اسم منتج (Produit) معين . أول شيء أود الإشارة إلى خاصيتي الفرز الخاصتين بالعنصر Table و هما : Filter - Filtered
أما فلترد : فهي قيمة بوليانية نريد من خلالها تفعيل الفرز أو لا.
و الثانية خاصة بكتابة صيغة الفرز و هو الأهم. و تأخد القيمة :
( اسم الحقل='القيمة النصية للحقل' ) مثلا نريد الفرز على الحقل Produit إذا كانت قيمته :
HDD_80G نكتب القيمة :
كود :
Produit='HDD_80G'
ثم نقوم بتفعيل الفلترة باعطاء القيمة True . هذا أثناء التصميم (من قسم الخصائص). كما يمكن التفعيل أو التعطيل برمجيا : نكتب على الزر الأول :
كود :
Table1.Filtered:=True;

و الثاني False
- ننفد البرنامج و نجرب الضغط على الزرين .
--- انظر المرفق1-----

- إذا أردنا الفلترة على حقل الكمية مثلا :
كود :
Qut='50'
يعني التصفية حول كل منتوج تساوي كميته 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 لتحرير القيم اختياريا.

آسف ، أردت إدراج مرفقات أخرى ، لكن بعد هذا التفصيل في الشرح ، أرى أنه لا داعي لذلك.

...../ يتبع /.....




الرد


الردود في هذا الموضوع
تعاريف و أمثلة بسيطة حول ق البيانات و ربط جدول بالدلفي،و بعض العمليات عليه/-1 - بواسطة nabilkeb - 17-12-2008, 09:38 PM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم