Saat kita mengoperasikan kumpulan data, kita sering kali perlu memfilter datanya. Misalnya: tabel data bernama Pelanggan memiliki No Cust, Nama Cust, Negara, Alamat, Telepon, Negara Bagian, Tarif Pajak, dan bidang lainnya. Untuk catatan pelanggan dengan Tiongkok atau nomor pelanggan lebih dari 1000, kumpulan data perlu disaring. Singkatnya, ada metode pemfilteran berikut:
1. Menggunakan properti Filter TTable dan TQuery
1. Atur properti Filter pada waktu desain
Misalnya, atur Filter ke: Country='China' lalu ubah properti Filtered ke True (perhatikan bahwa pemfilteran hanya efektif jika Filtered bernilai True). Maka Anda hanya dapat melihat rekaman yang konten bidang Negaranya adalah 'China'.
Operator yang dapat digunakan saat mengatur Filter adalah: <, >, <=, >=, =, <>, AND, OR, NOT.
Misalnya, jika Anda mengatur Filter ke: CustNo>=1000andCustNo<=5000, Anda hanya dapat melihat catatan pelanggan dengan nomor pelanggan antara 1000 dan 5000.
2. Pemfilteran dinamis selama program berjalan
Untuk mengubah properti Filter saat program sedang berjalan, ini mencakup dua situasi:
(1) Sisi kanan operator adalah konstanta, contoh: Tabel1Filter:=′State′+′=′+′′HI′′′;
Catatan: Konstanta string harus diapit oleh tiga pasang tanda kutip tunggal.
(2) Sisi kanan operator bukanlah suatu konstanta, dapat berupa nilai yang ditentukan oleh variabel, atau nilai yang diberikan oleh kotak masukan. Saat ini, Anda perlu menggunakan fungsi Format. Bentuk kodenya adalah: Table1Filter:=Format(′State′+′=′+′′′%S′′′,[StateValue]); di mana StateValue adalah variabel string yang telah diberi nilai, dan bisa juga bisa dalam bentuk lain, Misalnya: Edit1Teks.
2. Gunakan ApplyRange untuk memfilter rekaman dalam kumpulan data
Dengan menjalankan kode berikut, Anda hanya akan dapat melihat catatan pelanggan dengan nomor pelanggan antara 1000 dan 5000. Beberapa proses yang membentuk rutinitas ini adalah:
TerapkanRange,SetRangeStart,SetRangeEnd.
Tabel1SetRangeMulai;
Tabel1[′Nomor Cust′]:=1000;
Tabel1SetRangeEnd;
Tabel1[′Nomor Cust′]:=5000;
Tabel 1ApplyRange;
Catatan: Proses ini hanya bekerja pada bidang yang diindeks. Jika Anda ingin memfilter berdasarkan bidang yang tidak diindeks, sebaiknya gunakan sedikit trik: buat indeks palsu. Metode implementasinya adalah: Table1.IndexFieldNames:=field name; Delphi juga menyediakan metode sederhana untuk memanggil SetRangeStart, SetRangeEnd dan ApplyRange, misalnya: Table1.SetRange([Edit1.Text],[Edit2.Text]);
3. Gunakan event OnFilterRecord untuk memfilter. Event OnFilterRecord memungkinkan Anda membuat program pemfilteran berdasarkan kolom yang tidak dikunci, misalnya:
PROcedureTForm1.Table1FilterRecord(DataSet:TDataSet;varAccept:Boolean);
mulai
Terima:=DataSet[′State′]=′CA′;
akhir;
4. Pernyataan SQL menggunakan kontrol TQuery
1.Pernyataan SQL tidak mengandung variabel dan parameter
Pilih*dariPelanggan
DimanaNomor Pabean>=1000danNomor Pabean<=5000
2. Pernyataan SQL berisi parameter
Pilih*dariPelanggan
WhereCustNo>=:CustNo
Parameter CustNo diberi nilai selama runtime.
3. Pernyataan SQL berisi variabel
Saat ini, kode untuk menambahkan pernyataan SQL ke kontrol TQuery harus ditulis seperti ini:
Kueri1.Tutup;
Query1.SQL.Hapus;
Query1.SQL.Add(Format(′Pilih*dariPelanggan′+′′+′dimanaState=′+′′′%S′′′,[Nilai Negara]));
Query1.Open; Di antara keempat metode di atas, metode keempat adalah yang paling ampuh dan paling fleksibel untuk digunakan.