2012-04-13 121 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