'Imports System.Runtime.InteropServices Dim engine As New DAO.DBEngine() Dim wss As DAO.Workspaces = engine.Workspaces '既定のワークスペース Dim ws As DAO.Workspace = wss(0) Dim db As DAO.Database = Nothing Try db = ws.OpenDatabase("C:\Database\Animals.mdb", False, False) ' トランザクションを開始 ws.BeginTrans() ' SQL 実行 Dim sql As String = "INSERT INTO T_目マスタ VALUES (800, 'テスト', 'てすと', 1, 'DAO: Data Access Objects')" ' ' 更新や削除の失敗を検出できるよう、オプション引数で ' dbSeeChanges (他のユーザーに既に更新されていた場合にエラーとする) や ' dbFailOnError (エラー時に更新をロールバックする) を指定します。 ' Dim opt As DAO.RecordsetOptionEnum = DAO.RecordsetOptionEnum.dbFailOnError _ Or DAO.RecordsetOptionEnum.dbSeeChanges ' ' 第 2 引数の指定が無い場合、dbInconsistent (矛盾した更新を許可) が指定されたことになり、 ' キー競合等があっても Execute がエラーにならないことに注意が必要です。 db.Execute(sql, opt) ' コミット処理 ws.CommitTrans(DAO.CommitTransOptionsEnum.dbForceOSFlush) Catch ex As Exception ' OpenDatabase() 時のエラーかもしれないし、 ' Execute() 時のエラーかもしれない。 MsgBox(ex.Message) If db IsNot Nothing Then ' ロールバック処理 ws.Rollback() End If Finally If db IsNot Nothing Then db.Close() ' COM オブジェクトの解放処理 Marshal.ReleaseComObject(db) db = Nothing End If End Try ' COM オブジェクトの解放処理 Marshal.ReleaseComObject(ws) Marshal.ReleaseComObject(wss) Marshal.ReleaseComObject(engine)