こんにちは。
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でも同じなのでしょうか?
ご教授願います。
少なくとも、
> DB.Execute "INSERT INTO CD,Name Values(99,'')
これは文法的におかしいですよね。
最後の " が無いのはともかくとして、SQLの構文は
間違っていますから、エラーにならない方がおかしいです。
(列名を囲む括弧も無ければ、そもそもテーブル名すらありませんし)
> RollBack処理をしたいのですがどのようにすればいいのでしょうか?
Executeメソッドの第二引数について調べてみましょう。
現在のコードだと、更新エラーを報告しない設定で呼び出されていますよ。
ツイート | ![]() |