Science Cyber

السَّلاَمُ عَلَيْكُمْ وَرَحْمَةُ اللهِ وَبَرَكَاتُهُ

أَعُوْذُ بِاللِه مِنَ الشََّيْطَانِ الرَّجِيْمِ - بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ

Meneliti Kesalahan Perintah SQL

Jika anda seorang programmer, tentu melakukan kesalahan penulisan tidak hal yang asing lagi. Kesalahan yang sering saya lakukan adalah ketika menuliskan baris-baru perintah SQL. Dan jika ada kesalahan penulisan di baris string SQL yang sederhana sih, mungkin tidak menjadi masalah besar tetapi begitu perintah SQL nya kompleks tentu itu bukan pekerjaan yang mudah untuk meneliti letak kesalahannya. Dalam kasus ini saya menggunakan MySQL sebagai tulang punggung aplikasi saya.

Dan saya tahu setiap programmer mempunyai caranya sendiri-sendiri untuk trace kesalahan tersebut. Kalau saya pada intinya, setiap string SQL saya selalu letakan di sebuah variable dan variable inilah nantinya yang saya manipulasi melalui Immediate Window-nya Visual Basic.

Misalnya saya akan membuka data yang saya inginkan melalui satu procedure ini:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Private Sub refresh_grid()
Dim rs_grid As New ADODB.Recordset
Dim kode_pos As String
Dim str_open As String
'/set kode bengkel
kode_pos = Trim(lbl_kode_pos.Caption)
'/set string
str_open = "SELECT spos.pos_id, spos.kode_barang, mb.nama_barang, mb.satuan, spos.jumlah, spos.harga_jual, (spos.jumlah*spos.harga_jual) AS sub_total "
str_open = str_open & "FROM tbl_sub_pos AS spos INNER JOIN tbl_data_induk_barang AS mb ON spos.kode_barang=mb.kode_barang "
str_open = str_open & "WHERE spos.kode_pos='" & kode_pos & "'"
'/buka recordset
With rs_grid
.CursorLocation = adUseClient
.Open str_open, myconn, adOpenStatic, adLockReadOnly
.Requery
End With
'/isi grid
With grid_pos
.DataSource = rs_grid
.ReBind
.Refresh
End With
'/jumlahkan sub total
jumlahkan_sub_total
'/hapus memory
Set rs_grid = Nothing
End Sub

Dan jika terjadi kesalahan langkah berikut yang saya ambil:

  1. Saya sekali lagi selalu meletakan string SQL saya ke sebuah variable dan tidak langsung di buka di dalam blok pembukaan recordset. Misalnya: rs_grid.Open "SELECT mb.kode_barang FROM tbl_master_barang". Karena jika terjadi kesalahan akan susah melacaknya di Immediate Window.
  2. Jika ketika anda me-run coding anda dan anda di beritahukan ada kesalahan dari SQL anda, maka klik tombol Debug.

  3. Maka anda akan ‘dikembalikan’ ke layar Visual Basic anda dan Visual basic akan menunjukkan letak baris kesalahan,

    lalu secara otomatis Immediate Window akan muncul, lalu di Immediate Window ketikkan ?nama_variable_sql. Jadi misalnya string SQL saya tampung di variable str_open, maka saya ketik ?str_open untuk melihat isi dari variable tersebut.

  4. Dan langkah berikutnya yang saya ambil adalah meng-copy seluruh baris SQL tersebut dan saya paste ke SQL editor kesayangan saya.

  5. DI MySQL Query Browser saya akan terbantu karena Query Browser akan membedakan antara string, sintaks dasar, dll sehingga saya jauh lebih terbantu untuk menemukan kesalahan SQL saya. Dan jika kesalahan sudah saya temukan, maka akan saya benahi di Visual Basic saya.

No comments:

والله أعلم بالصواب

وَعَلَيْكُمْ السَّلاَمُ وَرَحْمَةُ اللهِ وَبَرَكَاتُهُ