DAOでクエリを作成する

DAOでクエリを作成する

Sub クエリ作成3()
'DAOでクエリ作成
Dim myDB As DAO.Database, DBName As String

'接続するデータベース
DBName = ThisWorkbook.Path & "\mdb\newDB.mdb"
Set myDB = OpenDatabase(DBName)

'クエリを作成
myDB.CreateQueryDef "Q_サンプルクエリ_DAO", "SELECT * FROM 商品マスタ;"

myDB.Close: Set myDB = Nothing

End Sub

教材には「ADOXで追加したクエリは、Accessのユーザーインターフェースの画面からは認識されず、見えない状態になってしまう。混乱を避けるために、ADOXでクエリを作成しない方が無難でしょう。」とあるが、実際に試すと、Accessの画面からも確認、操作できる。
(Excel、Accessともにバージョンは同じようであるが・・・。)
上記の理由からDAOの「CreateQueryDef」メソッドおよび「CREATE
VIEW」命令でクエリを作成する方法が紹介されている

実行結果

同名クエリを作成しようとした時のエラーメッセージ

CREATE VIEW 命令でクエリを作成する

Sub クエリ作成4()
Dim myCon As New ADODB.Connection
Dim conStr As String, DBName As String, mySQL As String

'接続するデータベースと接続文字列
DBName = ThisWorkbook.Path & "\mdb\newDB.mdb"
conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBName

'新規ビュー(選択クエリ)を作成するSQL文
mySQL = "CREATE VIEW Q_商品マスタ_CV AS SELECT * FROM 商品マスタ;"

With myCon
  .Open conStr
  .Execute mySQL
  .Close
End With

End Sub

実行結果

同名クエリを作成しようとした時のエラーメッセージ