MEMASTIKAN NUMBER TIDAK ERROR PADA SQL COMMAND

Pada Access, jika urusan tarik dan simpan data ditangani oleh Access sendiri ("Access way") maka no problem. Problemnya akan muncul jika urusan simpan data itu kita handle sendiri, misalnya dengan perintah SQL.

Salah satu problem adalah ketika kita menyimpan (insert) angka ke dalam field, padahal angka ada juga yang mengandung nilai desimal, atau tidak mengandung nilai angka alias bernilai Null.

Angka yang mengandung desimal bisa jadi problem karena angka tersebut akan dikonversi menjadi string, termasuk tanda desimalnya. Pada Regional Setting Windows yang menggunakan Format Indonesian, tanda desimal adalah koma (,). Tanda koma ini sama dengan tanda pemisah list pada perintah SQL. Tentu saja string perintah SQL-nya akan menjadi salah!

Berikut ini adalah sebuah function untuk memastikan string dari angka selalu kompatibel dengan perintah SQL, yaitu mengubah tanda koma (tanda desimal) menjadi tanda titik. Function ini pun sekaligus memberikan teks Null pada nilai Null sehingga tidak menjadi kosong.

Public Function NC(ByVal pNumber)
    If IsNull(pNumber) Then
        NC = "Null"
    ElseIf InStr(pNumber, ",") Then
        NC = Replace(pNumber, ",", ".")
    Else
        NC = pNumber
    End If
End Function

Simpan function di atas pada sebuah modul umum (General Module atau Standard Module).

Cara pakainya seperti ini:

tSql = "UPDATE tbl_Penjualan_dtl SET Diskon_1=" & NC(tDiskon2) & " WHERE (" & whr & ")"
DoCmd.RunSql tSql

Pada perintah SQL di atas, variabel tDiskon2 mungkin saja mengandung nilai desimal atau tidak mengandung nilai angka alias bernilai Null. Dengan function NC kita tidak perlu ragu lagi dengan format nilai pada variabel tersebut.

Demikian cara sederhana ini, semoga bermanfaat.

(Jangan lupa beri komen ya biar posting ini lebih populer di mesin pencari, thanks).


4 komentar:

Unknown mengatakan...

terima kasih.

yanka11 mengatakan...

Mantap,
trik dari the Master.

terima kasih bang

oets mengatakan...

Sip

Coyev mengatakan...

Jazakallah Khairan Bang...