【ACCESS VBA】ACCESSでSQLを使うサンプル(CREATE TABLE等(データ定義言語(DDL))はDAO.Executeを使う SELECT(データ操作言語(DML))はOpenRecordsetを使う)

Public Sub ACCESSでSQLを使うサンプル()
    Dim wrk As DAO.Workspace
    Dim dbs As DAO.Database
   
    Set wrk = DBEngine(0)
    Set dbs = CurrentDb
   
    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を使う
   
    wrk.BeginTrans
    dbs.Execute "CREATE TABLE テスト(番号 INT, 名前 CHAR(10),誕生日 DATE);"
   
   
    dbs.Execute "INSERT INTO テスト(番号,名前,誕生日) VALUES (1,’山田太郎’,#2016/1/21#);"
    dbs.Execute "INSERT INTO テスト(番号,名前,誕生日) VALUES (2,’山田花子’,#2016/2/21#);"
    dbs.Execute "INSERT INTO テスト(番号,名前,誕生日) VALUES (2,’山田チーズ’,#2016/3/21#);"
    dbs.Execute "UPDATE テスト SET 名前= ‘山田太郎次郎’ WHERE 番号 = 1;"
    dbs.Execute "DELETE FROM テスト WHERE 番号 = 2;"

    ‘SQL データ操作言語(DML)文のSELECTは OpenRecordset をつかう(ACCESS用語で選択クエリ)
    Set rs = dbs.OpenRecordset("SELECT * FROM テスト;")
       Do Until rs.EOF
            Debug.Print rs(0)
            Debug.Print rs(1)
            Debug.Print rs(2)
            rs.MoveNext
        Loop
    rs.Close
  ‘  dbs.Execute "DROP TABLE テスト;" ‘おまけ
   
   
    ‘Commit the transaction
   wrk.CommitTrans dbForceOSFlush

   
trans_Exit:
    ‘Clean up
    wrk.Close
    Set dbs = Nothing
    Set wrk = Nothing
    Exit Sub
   
trans_Err:
    ‘Roll back the transaction
    Debug.Print DAO.Errors(0).Description
    wrk.Rollback
    Resume trans_Exit
   
End Sub

コメント

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