Fungsi untuk Mencegah Perintah SQL Error
Misalnya pada form input data, user mengentry data-data:
1. Kode Suplier
2. Nama Suplier
3. Alamat
4. Kota
5. Nomor Telepon
Pada form entry data Suplier ada 5 text box seperti pada gambar berikut:

Setelah data diisi kemudia tombol Save di klik maka perintah sql akan dieksekusi. Event OnClick pada tombol Save untuk menyimpan data ke tabel Suplier adalah sebagai berikut:
Private Sub cmdSave_Click()
Dim strSql As String
strSql = "INSERT INTO SUPLIER " & _
"(KODE_SUPLIER,NAMA_SUPLIER,ALAMAT,KOTA,NOMOR_TELEPON) " & _
"VALUES ('" & Me.KODE_SUPLIER.Value & "','" & _
Me.NAMA_SUPLIER.Value & "','" & Me.ALAMAT.Value & _
"','" & Me.KOTA.Value & "','" & Me.NOMOR_TELEPON.Value & "');"
CurrentProject.Connection.Execute strSql
End Sub
Jika data-data yang dientry oleh user mengandung tanda petik tunggal (') misalnya suplier bernama AL-MA'SOEM seperti pada gambar berikut:

Setelah user meng-klik tombol Save maka akan muncul pesan error seperti gambar berikut:

Perintah SQL (query) megalami error jika dieksekusi karena adanya tanda petik tunggal pada data nama suplier sebagai berikut:
INSERT INTO SUPLIER ( KODE_SUPLIER, NAMA_SUPLIER, ALAMAT, KOTA, NOMOR_TELEPON ) VALUES ('A001', 'AL-MA'SOEM', 'JL GOLF NO 38', 'BANDUNG', '7838304');
Karena user mengisi nama suplier mengandung tanda petik satu (') maka perintah SQL dianggap ada operator yang tidak lengkap (missing operator).
Perintah SQL (query) yang benar adalah:
INSERT INTO SUPLIER ( KODE_SUPLIER, NAMA_SUPLIER, ALAMAT, KOTA, NOMOR_TELEPON ) VALUES ('A001', 'AL-MA''SOEM', 'JL GOLF NO 38', 'BANDUNG', '7838304');
Untuk mencegah terjadinya error saat mengeksekusi perintah sql atau query seperti kasus di atas, maka harus ada fungsi untuk menambahkan karakter tanda petik satu (') pada nama suplier AL-MA'SOEM menjadi AL-MA''SOEM.
Fungsi yang ini kita beri nama SQLEncrypt(), berikut kode program lengkapnya:
Public Function SQLEncrypt(sText)
Dim sTemp
If Not IsNull(sText) Then sTemp = Replace(sText, "'", "''")
SQLEncrypt = sTemp
End Function
Penjelasan fungsi SQLEncrypt
- Fungsi menerima 1 buah parameter
- Jika parameter ada isinya/tidak kosong maka akan dijalankan perintah Replace(sText, "'", "''") untuk mengganti karakter ' menjadi ''
- Hasil dikembalikan ke pemanggil fungsi
Private Sub cmdSave_Click()
Dim strSql As String
strSql = "INSERT INTO SUPLIER " & _
"(KODE_SUPLIER,NAMA_SUPLIER,ALAMAT,KOTA,NOMOR_TELEPON) " & _
"VALUES ('" & Me.KODE_SUPLIER.Value & "','" & _
SQLEncrypt(Me.NAMA_SUPLIER.Value) & "','" & Me.ALAMAT.Value & _
"','" & Me.KOTA.Value & "','" & Me.NOMOR_TELEPON.Value & "');"
CurrentProject.Connection.Execute strSql
End Sub
Sumber:http://www.ilmusoftware.com/2009/04/fungsi-untuk-mencegah-perintah-sql.html
0 komentar:
Posting Komentar