2010-09-27 6 views
3

J'ai une application Access 2003 que je voudrais créer des rapports pour utiliser des procédures stockées via des requêtes directes. Tout fonctionne bien avec une exception. Lorsque je spécifie la procédure stockée à utiliser pour la requête directe, je dois choisir un DSN pour fournir les informations de connexion à la base de données. Je dois être en mesure de modifier les informations de connexion pour la procédure stockée utilisée dans la requête de passe via le code. C'est ainsi que je peux passer aux environnements de développement, de production et de test à partir de l'application.Modification des paramètres de connexion lors de l'utilisation de la requête directe

Actuellement, tous mes accès aux données (ajouts, mises à jour, modifications) utilisent ADO et je crée les chaînes de connexion via le code VBA. Je ne sais pas comment changer les informations de connexion des requêtes directes via le code. Des pensées? Je vous remercie.

Répondre

3

Regardez la propriété Connect de votre requête directe. Vous pouvez changer de connexion avec VBA. Cette procédure bascule entre les connexions de base de données prod et 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 
Questions connexes