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.
Public Const constSeparatorCharacter As String = "," 'tambahkan deklarasi ini di bagian paling atas dari modul

Function konversiNilaiField(strNamaField As String, strNamaSumber As String, varNilaiField As Variant) As String
  Dim varCriteria() As String
  Dim varItem As Variant, n As Integer
On Error GoTo Err_Msg
  If varNilaiField = "" Then
    konversiNilaiField = ""
    Exit Function
  End If
  varItem = Split(varNilaiField, constSeparatorCharacter)
  ReDim Preserve varCriteria(UBound(varItem))
  For n = LBound(varItem) To UBound(varItem)
    If arrayTampilkanPropertiField(strNamaField, strNamaSumber, prpTypeGlobal) = "Text" Then
      If Left(varItem(n), 1) <> "'" And Right(varItem(n), 1) <> "'" Then
        varCriteria(n) = "'" & varItem(n) & "'"
      Else
        varCriteria(n) = varItem(n)
      End If
    ElseIf arrayTampilkanPropertiField(strNamaField, strNamaSumber, prpTypeGlobal) = "Date" Then
      If Left(varItem(n), 1) <> "#" And Right(varItem(n), 1) <> "#" Then
        varCriteria(n) = "#" & varItem(n) & "#"
      Else
        varCriteria(n) = varItem(n)
      End If
    Else
      varCriteria(n) = CStr(Val(varItem(n)))
    End If
  Next n
  konversiNilaiField = Join(varCriteria, ",")
Exit_Function:
  Exit Function
Err_Msg:
  MsgBox "Function konversiNilaiField, Error # " & str(Err.Number) & ", source: " & Err.Source & _
  Chr(13) & Err.Description
  Resume Exit_Function
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 ' '
? membukaDbs

?konversiNilaiField("KodeRek","tblRekUtama","101")
'101'
''Bila ada tiga nilai sekaligus, penulisannya seperti ini:
?konversiNilaiField("KodeRek","tblRekUtama","112,111,101")
'112','111','101'
Mengkonversi nilai pada field tipe data Date/Time dengan memberi tanda # #
? konversiNilaiField("TglAwalThn","tblPeriode","1/1/17")
#1/1/17#
''Bila ada tiga nilai sekaligus, penulisannya seperti ini:
?konversiNilaiField("KodeRek","tblRekUtama","112,111,101")
'112','111','101'
?konversiNilaiField("TglAwalThn","tblPeriode","1/1/17,2/1/17,3/1/17")
#1/1/17#,#2/1/17#,#3/1/17#
Mengkonversi nilai pada field tipe data Number tanpa memberi tanda petik tunggal maupu pagar
?konversiNilaiField("Id","tblMenus","1")
1
?konversiNilaiField("Id","tblMenus","3,2,1")
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

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Relasi Database

Menampilkan Data MySQL dalam Form di Access