Properti Filter

Menunjukkan filter untuk data dalam Recordset.

Pengaturan dan Nilai Yang Dikembalikan

Mengatur atau mengembalikan nilai Varian , yang bisa berisi salah satu item berikut ini:

  • String kriteria: String yang terdiri dari satu atau beberapa klausa individual yang digabungkan dengan operator AND atau OR .

  • Array marka buku: Array nilai marka buku unik yang menunjuk ke rekaman di objek Recordset .

  • Nilai FilterGroupEnum .

Keterangan

Gunakan properti Filter untuk menyaring rekaman secara selektif dalam objek Recordset . Recordset yang difilter menjadi kursor saat ini. Properti lain yang mengembalikan nilai berdasarkan kursor saat ini terpengaruh, seperti Properti AbsolutePosition (ADO), Properti AbsolutePage (ADO), Properti RecordCount (ADO), dan Properti PageCount (ADO). Mengatur properti Filter ke nilai baru tertentu memindahkan rekaman saat ini ke rekaman pertama yang memenuhi nilai baru.

String kriteria terdiri dari klausa dalam formulir FieldName-Operator-Value (misalnya, "LastName = 'Smith'"). Anda dapat membuat klausa majemuk dengan menggabungkan klausa individual dengan AND (misalnya, "LastName = 'Smith' AND FirstName = 'John'") atau ATAU (misalnya, "LastName = 'Smith' OR LastName = 'Jones'"). Untuk string kriteria, Gunakan panduan berikut:

  • FieldName harus berupa nama bidang yang valid dari Recordset. Jika nama bidang berisi spasi, Anda harus mengapit nama dalam tanda kurung siku.

  • Operator harus salah satu dari berikut ini: <, , <>=, >=, <>, =, atau LIKE.

  • Nilai adalah nilai yang akan Anda bandingkan nilai bidang (misalnya, 'Smith', #8/24/95#, 12,345, atau $50,00). Gunakan tanda kutip tunggal dengan string dan tanda paku (#) dengan tanggal. Untuk angka, Anda dapat menggunakan poin desimal, tanda dolar, dan notasi ilmiah. Jika Operator LIKE, Nilai dapat menggunakan kartubebas. Hanya kartubebas tanda bintang (*) dan tanda persen (%) yang diizinkan, dan kartubebas harus menjadi karakter terakhir dalam string. Nilai tidak boleh null.

Catatan

Untuk menyertakan tanda kutip tunggal (') dalam Nilai filter, gunakan dua tanda kutip tunggal untuk mewakili satu tanda kutip. Misalnya, untuk memfilter O'Malley, string kriteria harus "col1 = 'O''Malley'". Untuk menyertakan tanda kutip tunggal di awal dan akhir nilai filter, sertakan string dengan tanda pamungkas (#). Misalnya, untuk memfilter pada '1', string kriteria harus "col1 = #'1'#".

  • Tidak ada prioritas antara AND dan OR. Klausul dapat dikelompokkan dalam tanda kurung. Namun, Anda tidak dapat mengelompokkan klausa yang digabungkan oleh OR lalu bergabung dengan grup ke klausa lain dengan AND, seperti dalam cuplikan kode berikut:
    (LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'

  • Sebagai gantinya, Anda akan membuat filter ini sebagai
    (LastName = 'Smith' AND FirstName = 'John') OR (LastName = 'Jones' AND FirstName = 'John')

  • Dalam klausa LIKE , Anda dapat menggunakan kartubebas di awal dan akhir pola. Misalnya, Anda dapat menggunakan LastName Like '*mit*'. Atau dengan LIKE Anda hanya dapat menggunakan kartubebas di akhir pola. Contohnya:LastName Like 'Smit*'

Konstanta filter mempermudah penyelesaian konflik rekaman individual selama mode pembaruan batch dengan memungkinkan Anda untuk melihat, misalnya, hanya rekaman yang terpengaruh selama panggilan metode Metode UpdateBatch terakhir.

Mengatur properti Filter itu sendiri mungkin gagal karena konflik dengan data yang mendasar. Misalnya, kegagalan ini dapat terjadi ketika rekaman telah dihapus oleh pengguna lain. Dalam kasus seperti itu, penyedia mengembalikan peringatan ke koleksi Kumpulan Kesalahan (ADO ), tetapi tidak menghentikan eksekusi program. Kesalahan pada durasi hanya terjadi jika ada konflik pada semua rekaman yang diminta. Gunakan properti Properti Status (ADO Recordset) untuk menemukan rekaman yang berkonflik.

Mengatur properti Filter ke string panjang nol ("") memiliki efek yang sama seperti menggunakan konstanta adFilterNone .

Setiap kali properti Filter diatur, posisi rekaman saat ini berpindah ke rekaman pertama dalam subset rekaman yang difilter di Recordset. Demikian pula, ketika properti Filter dibersihkan, posisi rekaman saat ini berpindah ke rekaman pertama di Recordset.

Misalkan Recordset difilter berdasarkan bidang dari beberapa jenis varian, seperti jenis sql_variant. Kesalahan (DISP_E_TYPEMISMATCH atau 80020005) terjadi ketika subjenis bidang dan nilai filter yang digunakan dalam string kriteria tidak cocok. Misalnya, misalkan:

  • Objek Recordset (rs) berisi kolom (C) dari jenis sql_variant.
  • Dan bidang kolom ini telah diberi nilai 1 dari jenis I4. String kriteria diatur ke rs.Filter = "C='A'" pada bidang .

Konfigurasi ini menghasilkan kesalahan selama durasi. Namun, rs.Filter = "C=2" diterapkan pada bidang yang sama tidak akan menghasilkan kesalahan apa pun. Dan bidang difilter dari kumpulan catatan saat ini.

Lihat properti Properti Bookmark (ADO) untuk penjelasan tentang nilai marka buku tempat Anda dapat membuat array untuk digunakan dengan properti Filter.

Hanya Filter dalam bentuk string kriteria yang memengaruhi konten Recordset yang bertahan. Contoh string kriteria adalah OrderDate > '12/31/1999'. Filter yang dibuat dengan array marka buku, atau menggunakan nilai dari FilterGroupEnum, tidak memengaruhi konten Recordset yang bertahan. Aturan ini berlaku untuk Recordset yang dibuat dengan kursor sisi klien atau sisi server.

Catatan

Saat Anda menerapkan bendera adFilterPendingRecords ke Recordset yang difilter dan dimodifikasi dalam mode pembaruan batch, Recordset yang dihasilkan kosong jika pemfilteran didasarkan pada bidang kunci tabel dengan kunci tunggal dan modifikasi dilakukan pada nilai bidang kunci. Recordset yang dihasilkan tidak akan kosong jika salah satu pernyataan berikut ini benar:

  • Pemfilteran didasarkan pada bidang non-kunci dalam tabel berkunci tunggal.

  • Pemfilteran didasarkan pada bidang apa pun dalam tabel multi-kunci.

  • Modifikasi dilakukan pada bidang non-kunci dalam tabel ber-kunci tunggal.

  • Modifikasi dilakukan pada bidang apa pun dalam tabel multi-kunci.

Tabel berikut ini meringkas efek adFilterPendingRecords dalam kombinasi pemfilteran dan modifikasi yang berbeda. Kolom kiri menunjukkan kemungkinan modifikasi. Modifikasi dapat dilakukan pada salah satu bidang non-kunci, pada bidang kunci dalam tabel ber-kunci tunggal, atau pada salah satu bidang kunci dalam tabel multi-kunci. Baris atas memperlihatkan kriteria pemfilteran. Pemfilteran dapat didasarkan pada salah satu bidang non-kunci, bidang kunci dalam tabel ber-kunci tunggal, atau salah satu bidang kunci dalam tabel multi-kunci. Sel yang berpotangan memperlihatkan hasilnya. + Tanda plus berarti bahwa menerapkan adFilterPendingRecords menghasilkan Recordset yang tidak kosong. Tanda - minus berarti Recordset kosong.

Kombinasi Bukan kunci Kunci Tunggal Beberapa Kunci
Bukan kunci + + +
Kunci Tunggal + - T/A
Beberapa Kunci + T/A +

Berlaku Untuk

Objek Recordset (ADO)

Lihat juga

Contoh Properti Filter dan RecordCount (VB)Contoh Properti Filter dan RecordCount (VC++)Clear Method (ADO)Optimize Property-Dynamic (ADO)