嗯,有一种方法可以解决这个问题吗?
只需使用功能区中的外部数据 - 并将表从访问权限链接到 MySQL。让它工作——一旦你做到了?
然后在您的代码中执行此操作:
dim rst as DAO.RecordSet
With CurrentDB.queryDefs("MyPTQuery")
.Connection = currentdb.tableDefs("The working linked table").Connection
.SQL = "CALL MyStoreProc('10156','2021-03-03','2021-03-10')"
set rst = .OpenRecordSet
End if
我想你可以添加到上面的.ReturnsRecords = True,然后再说一遍?
好吧,创建一个 PT 查询 - 正确设置连接。然后你可以在代码中做到这一点:
Dim rst1 as DAO.RecordSet
Dim rst2 as DAO.ReocrdSet
With Currentdb.tableDefs("MyPTQuery")
.SQL = "CALL MyStoredProcedure('10156','2021-03-03','2021-03-10')"
set rst1 = .OpenRecordSet
END with
With Currentdb.tableDefs("MyPTQuery")
.SQL = "CALL MyStoredProcedure('10777','2021-04-03','2021-05-10')"
set rst2 = .OpenRecordSet
End With
请注意我们如何不搞乱创建查询定义。并注意我们如何一遍又一遍地使用 ONE pt 查询。
而且它会变得更好 假设您想要报告的存储过程?报告基于“MyPTQuery”
然后这样做:
With Currentdb.tableDefs("MyPTQuery")
.SQL = "CALL MyStoredProcedure('10777','2021-04-03','2021-05-10')"
End With
docmd.OpenReport "rptCustomerProjects", acViewPreview
其实上面可以这样写:
Currentdb.tableDefs("MyPTQuery").SQL = "CALL MyStoredProcedure('10777','2021-04-03','2021-05-10')"
docmd.OpenReport "rptCustomerProjects", acViewPreview
所以我非常建议您在 PT 查询中保存连接字符串。这样一来,您的代码就没有杂乱的连接字符串 - 而且这些连接现在已经“超出”了您的代码 - 您可以轻松更改整个数据库的连接 - 无需更改任何代码。
那么,当您运行您的表重新链接代码时?让该重新链接代码也更新任何 PT 查询。这样,您现在可以重新链接并将您的应用程序指向测试数据库、生产数据库或其他数据库。因此,代码中没有连接字符串是上述结果。
不管上面的?让链接表正常工作 - 然后使用该链接表中的“窃取”已知连接并将其推入 PT 查询的连接中,如上面的第一个示例所示。