CommitとRollback


Trans  2005-03-30 15:17:44  No: 120566  IP: [192.*.*.*]

こんにちは。
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-30 16:08:24  No: 120567  IP: [192.*.*.*]

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


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

編集 削除