我有一个Access 2003应用程序,我想通过传递查询创建使用存储过程的报告。除了一个例外,一切正常。当我指定用于传递查询的存储过程时,我必须选择DSN来提供数据库连接信息。我需要能够通过代码更改传递查询中使用的存储过程的连接信息。这样我就可以从应用程序中切换到开发,生产和测试环境。
目前我的所有数据访问(添加,更新,编辑)都使用ADO,我通过VBA代码构建连接字符串。我不确定如何通过代码更改传递查询的连接信息。有什么想法吗?谢谢。
答案 0 :(得分:3)
查看传递查询的Connect属性。您可以更改与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