【ACCESS VBA おすすめ】ACCESSでSQLを使うサンプルByADODB(CREATE TABLE等(データ定義言語(DDL))も SELECT(データ操作言語(DML))もADODBのExecuteでよい)

前回作成したサンプル でADODBを利用したバージョン

こちらのほうが、ACSESS特有のクエリ的概念も少なく(くせもなく)、SQL実行用メソッドExecuteで統一できるためメンテナンス効率を考えると、個人的におすすめ。

Public Sub ACCESSでSQLを使うサンプルByADODB()

    Debug.Print Application.CurrentProject.FullName
    Debug.Print Application.CurrentProject.ProjectType
    Debug.Print Application.CurrentProject.Connection.Provider

    Dim 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も理解が深まればいいな。

コメント

タイトルとURLをコピーしました