- PR -

access VBAのキー違反について

1
投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2005/03/23
投稿数: 105
投稿日時: 2008-04-15 09:30
いつもお世話になります。

こうと申します。

現在access2000のVBAにてプログラムを行っています。
テスト的に単純なフォームを一つ作ってテキスト
ボックスに記述した内容をボタンを押下したら
INSERTされるというようなものを作成しています。

テーブルにはひとつキーがあり(denno)そこに
INSERTして問題なく処理されるのですが、同じ
キーを入力して再度ボタンをクリックした時に
キー違反となりエラーが発生すると予想したの
ですが、VBAのロジックではエラーが発生
しません。access VBAではこの場合のエラー
はとれないのでしょうか?

/****** ins 部分 *********

Set WS = DBEngine.Workspaces(0)
Set DB = WS.Databases(0)
WS.BeginTrans

On Error GoTo Err_Sub_Update_DEN


sql = ""
sql = "該当INSERT文"
DB.Execute sql ※※ ここでエラー処理にいくと予想したのですが・・・
WS.CommitTrans

Exit_Sub_Update_DEN:

On Error GoTo 0

DB.Close
WS.Close
Exit Sub

Err_Sub_Update_DEN:

WS.Rollback
MsgBox Err.Description

宜しくお願いします。
ふるふる
会議室デビュー日: 2008/02/05
投稿数: 19
投稿日時: 2008-04-15 10:58
Execute するときに、dbFailOnError を指定しましょう。
あるいは、ADOのConnection.ExecuteとかCommand.Execute を使いましょう。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-04-15 11:24
回答が被りますが、Execute メソッドの第 2 引数に RecordsetOptionEnum.dbFailOnError を指定するか、あるいは DAO.Recordset を Open して AddNew ~ Update にしましょう。(ただし Table モードが望ましい)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
大ベテラン
会議室デビュー日: 2005/03/23
投稿数: 105
投稿日時: 2008-04-15 11:36
ふるふるさん、じゃんぬねっとさん

お返事ありがとうございました。

"dbFailOnError"

を指定することによって
例外の方に入ってきて
無事解決しました。

お世話になりました。
1

スキルアップ/キャリアアップ(JOB@IT)