Sebelum anda membaca artikel ini silahkan baca daluhu BeginTrans, CommitTrans, RollbackTrans di vb6 (Bagian I) disini karena ini merupakan lanjutannya. Selanjutnya saya akan membahas error yang menghasilkan error, misalnya sebuah error A yang ternyata menghasilkan error B, jadi kita tidak dapat mengetahui error A yang sebenarnya. Error ini biasanya akan terjadi jika kita menggunakan BeginTrans, CommitTrans, RollbackTrans, contoh kasus nya seperti ini :
Dalam sebuah form master terdapat TxtID, TxtName dan ini contoh sintak penyimpanan data :
Private Sub Cmd_Save_Click()Dalam sebuah form master terdapat TxtID, TxtName dan ini contoh sintak penyimpanan data :
On Error GoTo Salah
dim TempID as string
dim TempName as string
TempID = TxtID.Text
TempName = TxtAddress.Text
con.BeginTrans 'save to table head
con.Execute "INSERT INTO TMASTER (ID,NAME) VALUES ('" & TempID & "','" & TempName & "')
con.CommitTrans
MsgBox "Data Tersimpan!", vbInformation, "Info"
Exit Sub
Salah:
con.RollbackTrans
MsgBox Err.Number & " : " & Err.Description, vbExclamation, "Warning"
End Sub
Jika dilihat dari sintak diatas itu pasti akan error karena lihat yang dicetak merah (TxtAddress) tidak ada di dalam form Seharusnya pesan error yang ditampilkan adalah "Object required" (Object TxtAddress tidak ada di form), tapi karena ada con.RollbackTrans maka erronya malah menjadi "No transaction is active" (karena con.BeginTrans belum sempat diproses).Biasanya programmmer akan terkecoh dan terus mencari solusi error "No transaction is active"padahal error yang sebenarnya adalah "Object required". Maka dari itu saran saya adalah :
1. Selalu tempatkan con.BeginTrans di baris paling atas dari baris perintah perintah yang lain (atau tepat dibawah On Error Goto)
1. Selalu tempatkan con.BeginTrans di baris paling atas dari baris perintah perintah yang lain (atau tepat dibawah On Error Goto)
2.Mengunakan validasi IF dan SELECT CASE seperti pada contoh dibawah ini :
Private Sub Cmd_Save_Click()
On Error GoTo Salah
Dim IsConError As Boolean
dim TempID as string
dim TempName as string
TempID = TxtID.Text
TempName = TxtAddress.Text
con.BeginTrans 'save to table head
IsConError = True
con.Execute "INSERT INTO TMASTER (ID,NAME) VALUES ('" & TempID & "','" & TempName & "')
con.CommitTrans
IsConError = False
MsgBox "Data Tersimpan!", vbInformation, "Info"
Exit Sub
Salah:
Select Case IsConError
Case True
con.RollbackTrans
Case Else
MsgBox Err.Number & " : " & Err.Description, vbExclamation, "Warning"
End Select
End Sub
On Error GoTo Salah
Dim IsConError As Boolean
dim TempID as string
dim TempName as string
TempID = TxtID.Text
TempName = TxtAddress.Text
con.BeginTrans 'save to table head
IsConError = True
con.Execute "INSERT INTO TMASTER (ID,NAME) VALUES ('" & TempID & "','" & TempName & "')
con.CommitTrans
IsConError = False
MsgBox "Data Tersimpan!", vbInformation, "Info"
Exit Sub
Salah:
Select Case IsConError
Case True
con.RollbackTrans
Case Else
MsgBox Err.Number & " : " & Err.Description, vbExclamation, "Warning"
End Select
End Sub
Tags:error incorrect syntax near ' ', error incorrect format unknown tag, error cannot insert duplicate key row in object with unique index, error cannot insert the value null into column id table, error violation of primary key constraint cannot insert duplicate key in object, error could not find output table, error No transaction is active, error Object required
0 komentar:
Posting Komentar