いくつかの同様のデータベースで定義済みクエリのリストを作成して実行したいと考えています。
アイデアは、データベースを開き、クエリを実行してから閉じることです。今では、それぞれを手動で作成し、実行してから、各データベースから削除しています。
VBAコードでそれを行う方法がわかりません。簡単な例でそれを行う方法について誰かが私に一線を引くことができますか?
Name
データベースのコレクション内の各アイテムのプロパティを使用してQueryDefs
、保存したクエリのリストを作成できます。それがあなたの質問のタイトルに対処していると思います。しかし、あなたの質問の本文は、私が知る限り、もっと多くのことを求めているようです.
現在のデータベースSQL
の a のプロパティからテキストを含む文字列変数を読み込むことができます。QueryDef
次に、OpenDatabase
メソッドを使用して別の db ファイルを開き、Execute
そこにその文字列を開きます。
Public Sub RunQueryOnAnotherDb(ByVal pQuery As String, _
ByVal pRemoteDb As String)
Dim dbRemote As DAO.Database
Dim strSql As String
strSql = CurrentDb.QueryDefs(pQuery).SQL
'Debug.Print strSql
Set dbRemote = OpenDatabase(pRemoteDb)
dbRemote.Execute strSql, dbFailOnError
Debug.Print "RecordsAffected: " & dbRemote.RecordsAffected
dbRemote.Close
Set dbRemote = Nothing
End Sub
それを改良する余地は十分にあります。たとえば、エラー処理を追加する必要があります。しかし、簡単で汚いですが、役に立つ方向に向けてくれることを願っています。
このように自分のシステムでテストしたところ、データベース名とクエリ名で動作します。
Public Sub test_RunQueryOnAnotherDb()
Const cstrQuery As String = "qryTestDelete"
Const cstrRemoteDb As String = "C:\share\Access\0NewScratch.mdb"
RunQueryOnAnotherDb cstrQuery, cstrRemoteDb
End Sub