Skip to main content

Fungsi Untuk Mengkonversi Nilai Field Pada SQL di Access VBA

Sebagaimana diketahui, penulisan pernyataan SQL pada sebuah field dengan tipe data text di sebuah tabel harus dituliskan di antara tanda petik tunggal (' '), misalnya:'Jakarta','111', 'Kalimalang', dan sebagainya. Untuk field dengan tipe data Date/Time di sebuah SQL harus dituliskan di antara tanda pagar (# #), misalnya: #9/9/17# (sembilan September 2017). Sedangkan Untuk field dengan tipe data Number di sebuah SQL dituliskan tanpa menggunakan tanda apa pun, baik tanda petik tunggal maupun tanda pagar.
Nilai Field yang terdiri dari dua tipe data, field VouchId dengan tipe data Number dan VouchSupplier dengan tipe data Text
Kita dapat membuat fungsi konversi nilai field pada pernyataan SQL di Access VBA yang digunakan untuk mengkonversi nilai field sesuai dengan tipe data yang ada dalam tabel di Access. Adapun tipe data yang digunakan pada fungsi ini dapat berupa Text, Date, dan Number, seperti dijelaskan di awal. Berikut ini adalah fungsinya.
  1. Public Const constSeparatorCharacter As String = "," 'tambahkan deklarasi ini di bagian paling atas dari modul  
  2.   
  3. Function konversiNilaiField(strNamaField As String, strNamaSumber As String, varNilaiField As VariantAs String  
  4.   Dim varCriteria() As String  
  5.   Dim varItem As Variant, n As Integer  
  6. On Error GoTo Err_Msg  
  7.   If varNilaiField = "" Then  
  8.     konversiNilaiField = ""  
  9.     Exit Function  
  10.   End If  
  11.   varItem = Split(varNilaiField, constSeparatorCharacter)  
  12.   ReDim Preserve varCriteria(UBound(varItem))  
  13.   For n = LBound(varItem) To UBound(varItem)  
  14.     If arrayTampilkanPropertiField(strNamaField, strNamaSumber, prpTypeGlobal) = "Text" Then  
  15.       If Left(varItem(n), 1) <> "'" And Right(varItem(n), 1) <> "'" Then  
  16.         varCriteria(n) = "'" & varItem(n) & "'"  
  17.       Else  
  18.         varCriteria(n) = varItem(n)  
  19.       End If  
  20.     ElseIf arrayTampilkanPropertiField(strNamaField, strNamaSumber, prpTypeGlobal) = "Date" Then  
  21.       If Left(varItem(n), 1) <> "#" And Right(varItem(n), 1) <> "#" Then  
  22.         varCriteria(n) = "#" & varItem(n) & "#"  
  23.       Else  
  24.         varCriteria(n) = varItem(n)  
  25.       End If  
  26.     Else  
  27.       varCriteria(n) = CStr(Val(varItem(n)))  
  28.     End If  
  29.   Next n  
  30.   konversiNilaiField = Join(varCriteria, ",")  
  31. Exit_Function:  
  32.   Exit Function  
  33. Err_Msg:  
  34.   MsgBox "Function konversiNilaiField, Error # " & str(Err.Number) & ", source: " & Err.Source & _  
  35.   Chr(13) & Err.Description  
  36.   Resume Exit_Function  
  37. End Function  
Untuk 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.
arrayTampilkanPropertiField, yang digunakan untuk menampilkan properti field Type secara global.
Ada tiga parameter yang wajib diisi:
  1. strNamaField, merupakan nama field dalam sebuah tabel
  2. strNamaSumber, merupakan nama tabel dari strNamaField
  3. varNilaiField, merupakan nilai data dari strNamaField
Penulisan dilakukan di antara tanda kutip dua (" "). Misalnya, seperti eksekusi di Immediate Window ini:

Mengkonversi nilai pada field tipe data Text dengan memberi tanda ' '
  1. ? membukaDbs  
  2.   
  3. ?konversiNilaiField("KodeRek","tblRekUtama","101")  
  4. '101'  
  5. ''Bila ada tiga nilai sekaligus, penulisannya seperti ini:  
  6. ?konversiNilaiField("KodeRek","tblRekUtama","112,111,101")  
  7. '112','111','101'  
Mengkonversi nilai pada field tipe data Date/Time dengan memberi tanda # #
  1. ? konversiNilaiField("TglAwalThn","tblPeriode","1/1/17")  
  2. #1/1/17#  
  3. ''Bila ada tiga nilai sekaligus, penulisannya seperti ini:  
  4. ?konversiNilaiField("KodeRek","tblRekUtama","112,111,101")  
  5. '112','111','101'  
  6. ?konversiNilaiField("TglAwalThn","tblPeriode","1/1/17,2/1/17,3/1/17")  
  7. #1/1/17#,#2/1/17#,#3/1/17#  
Mengkonversi nilai pada field tipe data Number tanpa memberi tanda petik tunggal maupu pagar
  1. ?konversiNilaiField("Id","tblMenus","1")  
  2. 1  
  3. ?konversiNilaiField("Id","tblMenus","3,2,1")  
  4. 3,2,1  
Untuk apa fungsi ini dibuat? Untuk memudahkan pengguna akhir (end user) saat memasukkan berbagai macam nilai. Kita akan mengerti nanti saat sudah ada aplikasi yg lengkap di posting yang akan datang. Contoh konkretnya ada di gambar di awal posting ini.

Comments

Posting Terpopuler

Cara Mengatur dan Menggunakan ODBC untuk Mengakses Data Eksternal

Cara Sederhana Membuat Fungsi Terbilang di MS Acess VBA

Fungsi Untuk Membuka Database di Access VBA