[トランザクション処理を行う]
test.mdb のテストテーブルにレコードを追加します。
途中でエラーが発生した場合は、すべての追加を無効にします。
定数定義ファイルの読み込み関数(IncludeAdoDefine)を使用しています。(ソースコードは省略します)
【ソースコード】
[tips0151.vbs]
Option Explicit
On Error Resume Next
Dim strDbName
Dim blnRetCode
Dim objAdoCon
Dim lngLoop
Dim strSqlStmt
strDbName = "test.mdb"
blnRetCode = IncludeAdoDefine()
If blnRetCode = True Then
Set objAdoCon = WScript.CreateObject("ADODB.Connection")
If Err.Number = 0 Then
objAdoCon.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strDbName
objAdoCon.Open
objAdoCon.BeginTrans
For lngLoop = 1 To 5
strSqlStmt = "INSERT INTO テスト" & _
" (番号, 名称)" & _
" VALUES" & _
" (" & lngLoop & ", 'テスト" & lngLoop & "')"
objAdoCon.Execute strSqlStmt, , adExecuteNoRecords
If Err.Number = 0 Then
WScript.Echo lngLoop & ": レコードを追加しました。"
Else
WScript.Echo "エラー:" & Err.Description
blnRetCode = False
Exit For
End If
Next
If blnRetCode = True Then
WScript.Echo "コミットしました。"
objAdoCon.CommitTrans
Else
WScript.Echo "ロールバックしました。"
objAdoCon.RollbackTrans
End If
objAdoCon.Close
Else
WScript.Echo "エラー:" & Err.Description
End If
Set objAdoCon = Nothing
End If
【実行結果】
C:\> cscript //NoLogo tips0151.vbs
1: レコードを追加しました。
2: レコードを追加しました。
エラー:インデックス、主キー、またはリレーションシップで値が重複しているので、テ
ーブルを変更できませんでした。重複する値のあるフィールドの値を変更するか、インデ
ックスを削除してください。または重複する値を使用できるように再定義してください。
ロールバックしました。