トップに戻る

エクセルでデータベースmdbファイルでトランザクション

 ODBCで、エクセルファイルをサーバにした場合、トランザクションがサポートされていません。
もっと、データベースを活用したい人に、前章で、mdbファイルの利用を勧めました。。
しかし、トランザクションは、使えるようなのですが、隔離レベルで、リードコミットしか、サポートされていないに見たいです。
mdbファイルの利用も、この辺を考慮して、使わないと駄目だと思われます。
今回は、とりあえず、mdbファイルを利用して、トランザクションを利用した例を追加しました。

先ず前章の操作と例で、mdbファイルと、テーブルを作成してください。
なお、エクセルのVBAウィンドウで、ADOの参照設定をお忘れなく!!
以下にトランザクションを利用したサンプルソースを載せました。
Public Sub f()
    Dim con As New ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim sql As String, sql1 As String, sql2 As String
    'odbcの名前
    con.ConnectionString = "createodbc"

    sql = "select * from `counter`"
    sql1 = "insert into `counter` values('id6',60)"
    sql2 = "update `counter` set count=count+10 where id ='id1'"


     con.Open

       con.BeginTrans

          Set rs = con.Execute(sql)

          Sheet1.Range("a1").CopyFromRecordset rs
                   '追加クエリー
          Set rs = con.Execute(sql1)
          '更新クエリー
          Set rs = con.Execute(sql2)

          Set rs = con.Execute(sql)

          Sheet1.Range("d1").CopyFromRecordset rs

                    con.RollbackTrans
                    'con.CommitTrans

                   Set rs = con.Execute(sql)

                   Sheet1.Range("g1").CopyFromRecordset rs


        con.Close

        Set con = Nothing

End Sub

実行結果

上記のプログラムソースを実行した結果です。
追加クエリー、更新クエリーを実行した結果をロールバックしています。
ロールバックの文を注釈文にして、コミットすれば、結果は、変わります。
以上が、トランザクションを利用した例です。
アクセスがなくとも、mdbファイルを利用する事が、不便ですけど出来る例でした。