AccessVBA入門②DAO(Data Access Object)

Access

DAOは、JETデータベースエンジンに直接接続するため、他のDBとの接続はできませんが、ACCESS単体での処理に迅速に対応できます。

SQL実行

Sub SQL実行()
  Dim DB As DAO.Database
  Set DB = CurrentDb
  DB.Execute "SELECT * FROM T名簿"
  Set DB = Nothing
End Sub

テーブル・クエリ作成

  • CreateTableDef:テーブル作成定義
  • CreateQueryDef:クエリ作成定義
Sub テーブル作成()
  Dim DB As DAO.Database
  Dim TD As DAO.TableDef
  Set DB = CurrentDb
  Set TD = DB.CreateTableDef("T名簿")
  TD.Fields.Append TD.CreateField("番号",dbText,5)
  TD.Fields.Append TD.CreateField("氏名",dbText,20)
  TD.Fields.Append TD.CreateField("ポイント",dbLong)
  DB.TableDefs.Append TD
  Set TD = Nothing: Set DB = Nothing
End Sub
Sub クエリ作成()
  Dim DB As DAO.Database
  Dim QD As DAO.QueryDef
  Dim SQL As String
  Set DB = CurrentDb
  SQL = "SELECT * FROM T名簿 WHERE 番号 > 100;"
  Set QD = DB.CreateQueryDef("100番超", SQL)
  Set QD = Nothing: Set DB = Nothing
End Sub
Sub クエリ作成2()
  Dim DB As DAO.Database
  Dim QD As DAO.QueryDef
  Dim SQL As String
  Set DB = CurrentDb
  SQL = "INSERT INTO T名簿 VALUES('200','B',2000);"
  Set QD = DB.CreateQueryDef("", SQL)
  QD.Execute
  Set QD = Nothing: Set DB = Nothing
End Sub
Sub クエリ作成3()
  Dim DB As DAO.Database
  Dim QD As DAO.QueryDef
  Dim RS As DAO.Recordset
  Dim SQL As String
  Set DB = CurrentDb
  SQL = "SELECT * FROM T名簿 WHERE 番号 > 100;"
  Set QD = DB.CreateQueryDef("", SQL)
  Set RS = QD.OpenRecordset()
  Do Until RS.EOF
    Debug.Print RS("番号"),RS("氏名"),RS("ポイント")
    RS.MoveNext
  Loop
  Set QD = Nothing: Set RS = Nothing: Set DB = Nothing
End Sub

以上、本日は、DAOでした。最後までお読み頂き、ありがとうございました。

コメント

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