2010-09-27 3 views
3

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

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

ответ

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 
Смежные вопросы