2012-04-13 4 views
1

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

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

私はVBAコードでそれを行う方法がわかりません。 誰かが簡単な例でそれを行う方法について私にラインを落とすことができますか?

答えて

3

データベースの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 
関連する問題