いくつかの同様のデータベースで定義済みクエリのリストを作成して実行したいと考えています。Accessデータベースに対して一連のクエリを実行する方法
アイデアは、データベースを開いて、クエリを実行して閉じます。 ここでは、それぞれを手動で作成し、実行してから各データベースから削除します。
私はVBAコードでそれを行う方法がわかりません。 誰かが簡単な例でそれを行う方法について私にラインを落とすことができますか?
いくつかの同様のデータベースで定義済みクエリのリストを作成して実行したいと考えています。Accessデータベースに対して一連のクエリを実行する方法
アイデアは、データベースを開いて、クエリを実行して閉じます。 ここでは、それぞれを手動で作成し、実行してから各データベースから削除します。
私はVBAコードでそれを行う方法がわかりません。 誰かが簡単な例でそれを行う方法について私にラインを落とすことができますか?
データベースのQueryDefs
コレクション内の各アイテムにName
プロパティを使用して、保存したクエリのリストを作成できます。私はあなたの質問のタイトルに対処すると思います。しかし、あなたの質問の本文は、私が知る限りもっと多くを求めているようです。
SQL
プロパティの文字列変数を現在のデータベースの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
それを洗練する余地は十分です。たとえば、エラー処理を追加する必要があります。しかし、迅速な&汚いが、私はそれがあなたを有用な方向に向けることを願っています。
このように自分のシステムでテストしたところ、dbとクエリ名で動作します。
Public Sub test_RunQueryOnAnotherDb()
Const cstrQuery As String = "qryTestDelete"
Const cstrRemoteDb As String = "C:\share\Access\0NewScratch.mdb"
RunQueryOnAnotherDb cstrQuery, cstrRemoteDb
End Sub