1

いくつかの同様のデータベースで定義済みクエリのリストを作成して実行したいと考えています。

アイデアは、データベースを開き、クエリを実行してから閉じることです。今では、それぞれを手動で作成し、実行してから、各データベースから削除しています。

VBAコードでそれを行う方法がわかりません。簡単な例でそれを行う方法について誰かが私に一線を引くことができますか?

4

1 に答える 1

3

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
于 2012-04-13T16:47:52.287 に答える