2012-04-13 60 views
1

我想創建並在幾個類似的數據庫運行預定義的查詢列表運行查詢的序列。如何對Access數據庫

的想法是打開數據庫,運行查詢,然後關閉。 現在我手動創建它們中的每一個,運行並從每個數據庫中刪除它們。

我不知道該怎麼做,在VBA代碼。 任何人都可以給我一個關於如何做一個簡單的例子一行?

回答

3

對於數據庫的QueryDefs集合中的每個項目,您可以使用Name屬性來列出已保存的查詢。我認爲這是解決你問題的標題。但是,就我所知,你問題的主體似乎要求更多。

您可以使用當前數據庫中QueryDefSQL屬性的文本加載字符串變量。然後使用OpenDatabase方法來打開另一個數據庫文件,並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