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.
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.
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:
Mengkonversi nilai pada field tipe data Text dengan memberi tanda ' '
Nilai Field yang terdiri dari dua tipe data, field VouchId dengan tipe data Number dan VouchSupplier dengan tipe data Text |
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 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.
arrayTampilkanPropertiField, yang digunakan untuk menampilkan properti field Type secara global.
Ada tiga parameter yang wajib diisi:
- strNamaField, merupakan nama field dalam sebuah tabel
- strNamaSumber, merupakan nama tabel dari strNamaField
- varNilaiField, merupakan nilai data dari strNamaField
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,1Untuk 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
Post a Comment