CommitとRollback


Trans  2005-03-31 00:17:44  No: 120566

こんにちは。
Commitしているのにデータがデータベースに反映されていないため
投稿しました。
●環境
  WindowsXPPro(SP2)
  VB6.0
  Access2000
  DAO3.6

Accessデータベースにある1テーブルにデータを追加します。
CD    数値型  主キー
Name  文字型  空文字許可しない
上記の状態でNameに空文字を追加する場合にエラーになるはずですが
On Errorによるエラーが発生せずコミット処理がされません。
実際にはテーブルにはCD = 99のデータは追加されていませんが、
以下のソースではCommitTransが実行されます。
以下がソースです。
Private Sub Command1_Click()
    Dim DB     as DataBase
   
    On Error GoTo ErrHandler
    
    Workspaces(0).BeginTrans
    DB.Execute "INSERT INTO CD,Name Values(99,'')
    Workspaces(0).CommitTrans

Exit sub
ErrHandler:
    Workspaces(0).Rollback
End Sub

RollBack処理をしたいのですがどのようにすればいいのでしょうか?
これはADOでも同じなのでしょうか?
ご教授願います。


魔界の仮面弁士  2005-03-31 01:08:24  No: 120567

少なくとも、
>    DB.Execute "INSERT INTO CD,Name Values(99,'')
これは文法的におかしいですよね。
最後の " が無いのはともかくとして、SQLの構文は
間違っていますから、エラーにならない方がおかしいです。
(列名を囲む括弧も無ければ、そもそもテーブル名すらありませんし)

> RollBack処理をしたいのですがどのようにすればいいのでしょうか?
Executeメソッドの第二引数について調べてみましょう。
現在のコードだと、更新エラーを報告しない設定で呼び出されていますよ。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加