前回作成したサンプル でADODBを利用したバージョン
こちらのほうが、ACSESS特有のクエリ的概念も少なく(くせもなく)、SQL実行用メソッドExecuteで統一できるためメンテナンス効率を考えると、個人的におすすめ。
Public Sub ACCESSでSQLを使うサンプルByADODB()
Debug.Print Application.CurrentProject.FullName
Debug.Print Application.CurrentProject.ProjectType
Debug.Print Application.CurrentProject.Connection.ProviderDim Cn As ADODB.Connection
Set Cn = CurrentProject.Connection ‘自分自身を設定
On Error GoTo trans_Err
‘Begin the transaction
‘ Create a table with three fields and a unique
‘ index made up of all three fields.
‘データ定義言語(DDL)文関係は、Executeを使う
Cn.BeginTrans
Cn.Execute "CREATE TABLE テスト(番号 INT, 名前 CHAR(10),誕生日 DATE);"
Cn.Execute "INSERT INTO テスト(番号,名前,誕生日) VALUES (1,’山田太郎’,#2016/1/21#);"
Cn.Execute "INSERT INTO テスト(番号,名前,誕生日) VALUES (2,’山田花子’,#2016/2/21#);"
Cn.Execute "INSERT INTO テスト(番号,名前,誕生日) VALUES (2,’山田チーズ’,#2016/3/21#);"
Cn.Execute "UPDATE テスト SET 名前= ‘山田太郎次郎’ WHERE 番号 = 1;"
Cn.Execute "DELETE FROM テスト WHERE 番号 = 2;"‘DAOと違いSQL データ操作言語(DML)文のSELECTでも Executeが使える
Set Rs = Cn.Execute("SELECT * FROM テスト;")
Do Until Rs.EOF
Debug.Print Rs(0)
Debug.Print Rs(1)
Debug.Print Rs(2)
Rs.MoveNext
Loop
Rs.Close
‘ Cn.Execute "DROP TABLE テスト;" ‘おまけ
‘Commit the transaction
Cn.CommitTrans
trans_Exit:
‘Clean up
‘.Close
Set Cn = Nothing
Exit Sub
trans_Err:
‘Roll back the transaction
Debug.Print Cn.Errors(0).Description
‘.Rollback
Resume trans_Exit
End Sub
前回(DAO)と今回(ADO)のサンプルに作成するにあたりACSESSサンプルコードをインターネット検索していたが、テーブルアクセス方法がADOとDAOが混在していて、それぞれに主張(くせ)があり、ACCESSとっつきにくいなという印象。
そうであっても、いろいろな事情でACCESSを使わざるおえない職場もあるわけで。
だから自分なりコーディングポリシーをもって、どちらのアクセス方法についてもキモを押さえておかないと、有益なサンプルを見つけても、それを活用(流用)できない。
とりあえず今の自分のコーディングポリシーはADO+SQLがよさそうだと感じた。
加えてDAOも理解も深めていこう。
ADOもDAOも理解が深まればいいな。
コメント