我有一个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/

10-11 04:37