เมื่อเราดำเนินการชุดข้อมูล เรามักจะต้องกรองข้อมูล ตัวอย่างเช่น ตารางข้อมูลที่ชื่อลูกค้ามี CustNo, CustName, ประเทศ, ที่อยู่, โทรศัพท์, รัฐ, TaxRate และช่องอื่นๆ หากคุณต้องการดูเฉพาะประเทศ สำหรับบันทึกลูกค้าที่มีประเทศจีนหรือหมายเลขลูกค้ามากกว่า 1,000 ชุดข้อมูลจะต้องได้รับการกรอง โดยสรุปมีวิธีกรองดังนี้
1. การใช้คุณสมบัติตัวกรองของ TTable และ TQuery
1. ตั้งค่าคุณสมบัติตัวกรอง ณ เวลาออกแบบ
ตัวอย่างเช่น ตั้งค่าตัวกรองเป็น: Country='China' จากนั้นเปลี่ยนคุณสมบัติกรองแล้วเป็น True (โปรดทราบว่าการกรองจะมีผลเฉพาะเมื่อกรองแล้วเป็น True) จากนั้นคุณจะเห็นเฉพาะเรกคอร์ดที่มีเนื้อหาฟิลด์ประเทศที่สอดคล้องกันคือ 'จีน'
โอเปอเรเตอร์ที่สามารถใช้ได้เมื่อตั้งค่าตัวกรองคือ: <, >, <=, >=, =, <>, AND, OR, NOT
ตัวอย่างเช่น หากคุณตั้งค่าตัวกรองเป็น: CustNo>=1000andCustNo<=5000 คุณจะเห็นเฉพาะบันทึกลูกค้าที่มีหมายเลขลูกค้าระหว่าง 1000 ถึง 5000 เท่านั้น
2. การกรองแบบไดนามิกระหว่างการทำงานของโปรแกรม
เมื่อต้องการเปลี่ยนคุณสมบัติตัวกรองในขณะที่โปรแกรมกำลังทำงานอยู่ จะมีสองสถานการณ์:
(1) ทางด้านขวาของโอเปอเรเตอร์จะเป็นค่าคงที่ เช่น Table1Filter:=′State′+′=′+′′′HI′′′;
หมายเหตุ: ค่าคงที่สตริงจะต้องอยู่ในเครื่องหมายคำพูดเดี่ยวสามคู่
(2) ด้านขวาของตัวดำเนินการไม่ใช่ค่าคงที่ อาจเป็นค่าที่ระบุโดยตัวแปร หรือค่าที่กำหนดโดยกล่องอินพุต ในขณะนี้ คุณต้องใช้ฟังก์ชันรูปแบบ รูปแบบโค้ดคือ: Table1Filter:=Format(′State′+′=′+′′′%S′′′,[StateValue]); โดยที่ StateValue เป็นตัวแปรสตริงที่ได้รับการกำหนดค่า และยังสามารถ อยู่ในรูปแบบอื่น เช่น แก้ไข1ข้อความ
2. ใช้ ApplyRange เพื่อกรองบันทึกในชุดข้อมูล
ด้วยการรันโค้ดต่อไปนี้ คุณจะสามารถดูบันทึกลูกค้าที่มีหมายเลขลูกค้าระหว่าง 1,000 ถึง 5,000 เท่านั้น กระบวนการต่างๆ ที่ประกอบขึ้นเป็นกิจวัตรนี้คือ:
ApplyRange, SetRangeStart, SetRangeEnd
ตารางที่ 1 SetRangeStart;
Table1[′CustNo′]:=1000;
ตารางที่ 1 SetRangeEnd;
Table1[′CustNo′]:=5000;
ตารางที่ 1 ApplyRange;
หมายเหตุ: กระบวนการนี้ใช้ได้กับเขตข้อมูลที่มีการจัดทำดัชนีเท่านั้น หากคุณต้องการกรองตามฟิลด์ที่ไม่ได้จัดทำดัชนี คุณอาจใช้เคล็ดลับเล็กๆ น้อยๆ เช่นกัน: สร้างดัชนีปลอม วิธีการนำไปใช้คือ: Table1.IndexFieldNames:=field name; Delphi ยังมีวิธีการเรียก SetRangeStart, SetRangeEnd และ ApplyRange อย่างง่าย เช่น Table1.SetRange([Edit1.Text],[Edit2.Text]);
3. ใช้เหตุการณ์ OnFilterRecord เพื่อกรอง เหตุการณ์ OnFilterRecord ช่วยให้คุณสร้างโปรแกรมการกรองตามฟิลด์ที่ไม่มีการคีย์ ตัวอย่างเช่น:
PROcedureTForm1.Table1FilterRecord (ชุดข้อมูล: TDataSet; varAccept: บูลีน);
เริ่ม
ยอมรับ:=ชุดข้อมูล['สถานะ']='CA';
จบ;
4. คำสั่ง SQL โดยใช้การควบคุม TQuery
1.คำสั่ง SQL ไม่มีตัวแปรและพารามิเตอร์
เลือก*จากลูกค้า
โดยที่CustNo>=1000และCustNo<=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; ในบรรดาสี่วิธีข้างต้น วิธีที่สี่เป็นวิธีที่มีประสิทธิภาพมากที่สุดและมีความยืดหยุ่นในการใช้งานมากที่สุด