| エクセルでデータベース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ファイルを利用する事が、不便ですけど出来る例でした。 |