عندما نقوم بتشغيل مجموعة بيانات، نحتاج غالبًا إلى تصفية البيانات. على سبيل المثال: يحتوي جدول البيانات المسمى "العميل" على رقم العميل واسم العميل والبلد والعنوان والهاتف والحالة ومعدل الضريبة وغيرها من الحقول. بالنسبة لسجلات العملاء في الصين أو أرقام العملاء الأكبر من 1000، يجب تصفية مجموعة البيانات. باختصار، هناك طرق التصفية التالية:
1. استخدام خصائص التصفية في TTable وTQuery
1. قم بتعيين خاصية التصفية في وقت التصميم
على سبيل المثال، قم بتعيين عامل التصفية على: Country='China' ثم قم بتغيير الخاصية التي تمت تصفيتها إلى True (لاحظ أن التصفية تكون فعالة فقط عندما تكون Filtered صحيحة). وبعد ذلك يمكنك فقط رؤية السجلات التي يكون محتوى حقل البلد المقابل لها هو "الصين".
عوامل التشغيل التي يمكن استخدامها عند ضبط عامل التصفية هي: <، >، <=، >=، =، <>، AND، OR، NOT.
على سبيل المثال، إذا قمت بتعيين عامل التصفية على: CustNo>=1000andCustNo<=5000، فيمكنك فقط رؤية سجلات العملاء التي تحتوي على أرقام العملاء بين 1000 و5000.
2. التصفية الديناميكية أثناء تشغيل البرنامج
لتغيير خاصية التصفية أثناء تشغيل البرنامج، يتضمن ذلك حالتين:
(1) الجانب الأيمن من عامل التشغيل ثابت، على سبيل المثال: Table1Filter:='State'+'='+'''HI''''؛
ملاحظة: يجب وضع ثوابت السلسلة في ثلاثة أزواج من علامات الاقتباس المفردة.
(2) الجانب الأيمن من العامل ليس ثابتًا، فقد يكون قيمة محددة بواسطة متغير، أو قيمة مقدمة بواسطة مربع إدخال. في هذا الوقت، تحتاج إلى استخدام وظيفة التنسيق. نموذج الكود هو: Table1Filter:=Format(′State′+′=′+′′%S′′′,[StateValue]); حيث تكون StateValue متغير سلسلة تم تعيين قيمة له، ويمكن أيضًا يكون في أشكال أخرى، على سبيل المثال: تحرير1نص.
2. استخدم ApplyRange لتصفية السجلات في مجموعة البيانات
من خلال تنفيذ التعليمات البرمجية التالية، ستتمكن فقط من رؤية سجلات العملاء التي تحتوي على أرقام العملاء بين 1000 و5000. العمليات العديدة التي تشكل هذا الروتين هي:
ApplyRange،SetRangeStart،SetRangeEnd.
الجدول 1SetRangeStart؛
الجدول 1 ['CustNo']:=1000;
الجدول1SetRangeEnd؛
الجدول 1 ['CustNo']:=5000;
الجدول 1 - تطبيق النطاق؛
ملحوظة: هذه العملية تعمل فقط على الحقول المفهرسة. إذا كنت تريد التصفية بناءً على الحقول غير المفهرسة، فقد تستخدم خدعة صغيرة أيضًا: إنشاء فهرس مزيف. طريقة التنفيذ هي: Table1.IndexFieldNames:=field name؛ توفر دلفي أيضًا طرقًا بسيطة لاستدعاء SetRangeStart وSetRangeEnd وApplyRange، على سبيل المثال: Table1.SetRange([Edit1.Text],[Edit2.Text]);
3. استخدم الحدث OnFilterRecord للتصفية يسمح لك الحدث OnFilterRecord بإنشاء برامج تصفية بناءً على الحقول غير ذات المفاتيح، على سبيل المثال:
PROcedureTForm1.Table1FilterRecord(DataSet:TDataSet;varAccept:Boolean);
يبدأ
قبول:=DataSet[′State′]=′CA′;
نهاية؛
4. عبارات SQL باستخدام التحكم TQuery
1. عبارات SQL لا تحتوي على متغيرات ومعلمات
اختر*من العميل
حيث رقم العميل>=1000 ورقم العميل<=5000
2. تحتوي عبارات SQL على معلمات
اختر*من العميل
WhereCustNo>=:CustNo
يتم تعيين قيمة للمعلمة CustNo أثناء وقت التشغيل.
3. تحتوي عبارات SQL على متغيرات
في هذا الوقت، يجب كتابة التعليمات البرمجية لإضافة عبارات SQL إلى عنصر تحكم TQuery مثل هذا:
الاستعلام 1. إغلاق؛
Query1.SQL.Clear;
Query1.SQL.Add(Format('Select*fromCustomer'+''+'whereState='+'''%S'''',[StateValue]));
Query1.Open؛ من بين الطرق الأربعة المذكورة أعلاه، تعتبر الرابعة هي الأقوى والأكثر مرونة في الاستخدام.