Seperti diketahui, penulisan kriteria pada SQL di VBA mengikuti aturan main tertentu yang sesuai dengan SQL pada Access. Kriteria pada SQL digunakan untuk memerintahkan SQL (umumnya di server database) supaya menampilkan data sesuai dengan keinginan pengguna.
Selain menampilkan data sesuai keinginan pengguna, pemakaian kriteria juga dapat meringankan beban server database. Dengan menggunakan kriteria, server database dapat menampilkan data seperlunya saja. Bayangkan saja jika sebuah tabel Curriculum Vitae terdiri dari field Id, nama orang, tanggal lahir, dan seterusnya. Pada situasi tertentu, kita hanya ingin mengetahui nama orang yang terlahir di bulan Juli, maka kita tidak perlu menampilkan seluruh record yang jumlahnya mungkin ribuan. Kita hanya perlu menggunakan kriteria tertentu untuk menyaring data kelahiran di bulan Juli.
Bila selama ini kita terbiasa menuliskan kriteria untuk SQL secara statis di VBA, kali ini kita akan menuliskan fungsi untuk membuat kriteria SQL secara dinamis. Fungsi ini nantinya bisa diaplikasikan ke berbagai macam SQL. Untuk diketahui, fungsi ini merupakan bagian kecil dari keseluruhan fungsi yang akan diposting di waktu yang akan datang, bisa diaplikasikan pada berbagai macam form, salah satunya seperti terlihat pada gambar di atas.
Fungsi berikut ini dapat digunakan untuk menuliskan kriteria yang dinyatakan dalam bentuk SQL.
membukaDbs, yang digunakan untuk memastikan bahwa database sudah dalam posisi untuk dibuka dan diolah.
konversiNilaiField, yang digunakan untuk mengkonversi nilai field.
Ada tiga parameter yang wajib diisi dan dua yang sifatnya opsional:
Membuat kriteria pada field dengan tipe data Number
Berbagai macam kriteria untuk memfilter data yang ingin ditampilkan dengan menggunakan query |
Bila selama ini kita terbiasa menuliskan kriteria untuk SQL secara statis di VBA, kali ini kita akan menuliskan fungsi untuk membuat kriteria SQL secara dinamis. Fungsi ini nantinya bisa diaplikasikan ke berbagai macam SQL. Untuk diketahui, fungsi ini merupakan bagian kecil dari keseluruhan fungsi yang akan diposting di waktu yang akan datang, bisa diaplikasikan pada berbagai macam form, salah satunya seperti terlihat pada gambar di atas.
Fungsi berikut ini dapat digunakan untuk menuliskan kriteria yang dinyatakan dalam bentuk SQL.
'Pernyataan Enum enumOperator ini harus ditaruh dibagian deklarasi modul (di bagian paling atas dari modul) Public Enum enumOperator oprEqual = 0 oprNotEqual = 1 oprMoreThan = 2 oprMoreOrEqualThan = 3 oprLessThan = 4 oprLessOrEqualThan = 5 oprBetween = 6 oprNotBetween = 7 oprIn = 8 oprNotIn = 9 End Enum
Function membuatKriteriaString(strNamaField As String, _ strNamaSumber As String, _ varNilaiField1 As Variant, _ Optional varNilaiField2 As Variant = "", _ Optional intSimbolOperator As enumOperator = 0 _ ) As String Dim strKriteria As String, strOpr As String Dim strNilaiKonversi1, strNilaiKonversi2 As String On Error GoTo Err_Msg strNilaiKonversi1 = konversiNilaiField(strNamaField, strNamaSumber, varNilaiField1) strNilaiKonversi2 = konversiNilaiField(strNamaField, strNamaSumber, varNilaiField2) Select Case intSimbolOperator Case oprEqual: strOpr = " = " & strNilaiKonversi1 Case oprNotEqual: strOpr = " <> " & strNilaiKonversi1 Case oprMoreThan: strOpr = " > " & strNilaiKonversi1 Case oprMoreOrEqualThan: strOpr = " >= " & strNilaiKonversi1 Case oprLessThan: strOpr = " < " & strNilaiKonversi1 Case oprLessOrEqualThan: strOpr = " <= " & strNilaiKonversi1 Case oprBetween: strOpr = " BETWEEN " & strNilaiKonversi1 & " AND " & strNilaiKonversi2 Case oprNotBetween: strOpr = " NOT BETWEEN " & strNilaiKonversi1 & " AND " & strNilaiKonversi2 Case oprIn: strOpr = " IN " & "(" & strNilaiKonversi1 & ")" Case oprNotIn: strOpr = " NOT IN " & "(" & strNilaiKonversi1 & ")" Case Else: strOpr = " = " & strNilaiKonversi1 End Select strKriteria = strNamaField & strOpr membuatKriteriaString = strKriteria Exit_Function: Exit Function Err_Msg: MsgBox "Function membuatKriteriaString, Error # " & str(Err.Number) & ", source: " & Err.Source & _ Chr(13) & Err.Description Resume Exit_Function End FunctionUntuk menjalankan fungsi di atas, maka ada beberapa fungsi yang sudah harus tersedia di modul Access. Fungsi itu adalah:
membukaDbs, yang digunakan untuk memastikan bahwa database sudah dalam posisi untuk dibuka dan diolah.
konversiNilaiField, yang digunakan untuk mengkonversi nilai field.
Ada tiga parameter yang wajib diisi dan dua yang sifatnya opsional:
- strNamaField, merupakan nama field dalam sebuah tabel, sifatnya wajib
- strNamaSumber, merupakan nama tabel dari strNamaField, sifatnya wajib
- varNilaiField1, merupakan nilai data dari strNamaField pertama, sifatnya wajib
- varNilaiField2, merupakan nilai data dari strNamaField kedua, sifatnya opsional
- intSimbolOperator, merupakan operator string, sifatnya opsional, dengan nilai default 0
Membuat kriteria pada field dengan tipe data Number
? membuatKriteriaString("Induk","tblMenus","1",,oprMoreThan) Induk > 1 ? membuatKriteriaString("Induk","tblMenus","1","3",oprBetween) Induk BETWEEN 1 AND 3Membuat kriteria pada field dengan tipe data Text
? membuatKriteriaString("KodeRek","tblRekUtama","111",,oprNotEqual) KodeRek <> '111' ? membuatKriteriaString("KodeRek","tblRekUtama","111,112,116",,oprIn) KodeRek IN ('111','112','116') ? membuatKriteriaString("KodeRek","tblRekUtama","111,112,116",,oprNotIn) KodeRek NOT IN ('111','112','116')Dengan menggunakan fungsi membuatKriteriaString, nantinya, kita bisa membuat query yang kriterianya bisa kita atur secara dinamis, seperti terlihat di gambar di awal posting ini.
Comments
Post a Comment