投稿者 魔界の仮面弁士  (社会人) 投稿日時 2020/8/28 10:21:12
>> ADO(DAO) でのつなぎ方がわかりません
> 必要ならサンプルを書きますが… .NET が登場する前の古い技術なので、
> VB.NET で開発していくのであれば、ADO / DAO / RDO などを覚える必要は無いと思いますよ。

同じ処理の DAO (Microsoft Data Access Objects) 版です。
参照設定に、COM の "Microsoft DAO 3.6 Object Library" を加えてください。

'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"FalseFalse)

    ' トランザクションを開始  
    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)