我有一个Access 2003应用程序,我想通过传递查询创建使用存储过程的报告。一切正常,只有一个例外。当我指定用于传递查询的存储过程时,我必须选择一个DSN来提供数据库连接信息。我需要能够通过代码更改在传递查询中使用的存储过程的连接信息。这样,我可以从应用程序内部切换到开发,生产,测试环境。
当前,我所有的数据访问(添加,更新,编辑)都使用ADO,我通过VBA代码构建连接字符串。我不确定如何通过代码更改传递查询的连接信息。有什么想法吗?谢谢。
最佳答案
查看传递查询的Connect属性。您可以更改Connect with VBA。此过程在prod和dev数据库连接之间切换。
Public Sub SwitchPassThroughConnection(ByVal pQuery As String, ByVal pTarget As String)
Dim db As DAO.Database
Dim qdef As DAO.QueryDef
Dim strConnect As String
Dim blnError As Boolean
Set db = CurrentDb()
Select Case pTarget
Case "dev"
strConnect = "ODBC;DRIVER={PostgreSQL Unicode};DATABASE=dev;SERVER=cmpq;" & _
"PORT=5432;UID=hans;PWD=changeme;CA=d;A6=;A7=100;A8=4096;" & _
"B0=255;B1=8190;BI=0;C2=dd_;CX=1b502bb;A1=7.4"
Case "prod"
strConnect = "ODBC;DRIVER={PostgreSQL Unicode};DATABASE=prod;SERVER=cmpq;" & _
"PORT=5432;UID=hans;PWD=changeme;CA=d;A6=;A7=100;A8=4096;" & _
"B0=255;B1=8190;BI=0;C2=dd_;CX=1b502bb;A1=7.4"
Case Else
blnError = True
MsgBox "Unrecognized target."
End Select
If Not blnError Then
Set qdef = db.QueryDefs(pQuery)
qdef.Connect = strConnect
qdef.Close
End If
Set qdef = Nothing
Set db = Nothing
End Sub
关于ms-access-2003 - 使用传递查询时更改连接参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3806248/