Изменение параметров соединения при использовании сквозного запроса - PullRequest
3 голосов
/ 27 сентября 2010

У меня есть приложение Access 2003, которое я хотел бы создавать отчеты для использования хранимых процедур через сквозные запросы. Все отлично работает с одним исключением. Когда я указываю хранимую процедуру для использования в сквозном запросе, мне нужно выбрать DSN, чтобы предоставить информацию о соединении с базой данных. Мне нужно иметь возможность изменить информацию о соединении для хранимой процедуры, используемой в сквозном запросе через код . Это позволяет мне переходить к средам разработки, производства и тестирования из приложения.

В настоящее время весь мой доступ к данным (дополнения, обновления, изменения) использует ADO, и я строю строки подключения с помощью кода VBA. Я не уверен, как изменить информацию о соединении сквозных запросов с помощью кода. Какие-нибудь мысли? Спасибо.

1 Ответ

3 голосов
/ 28 сентября 2010

Посмотрите на свойство Connect вашего сквозного запроса. Вы можете изменить 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
...