IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Problème de persistance de ma connection en ADO ?


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 13
    Points : 14
    Points
    14
    Par défaut Problème de persistance de ma connection en ADO ?
    Bonjour,

    Voilà je souhaite développé un accès à une base SQL Serveur depuis un script VBA sous Access.

    J'ai développé une connection à cette base, que je souhaite appelé à chaque fois que j'en ai besoin.

    Ci-dessous mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    ' Variable Globale pour la connection serveur
    Public Gbl_CnxSqlServer As ADODB.Connection
    Public Gbl_CnxSqlOK As Boolean
    
    ' Connection au serveur SQL Server, via ADODB
    Function ADO_CnxSQLServer()
        If (Gbl_CnxSqlOK <> True) Then
            Debug.Print "ADO_CnxSQLServer: affectation de la variable Gbl_CnxSqlServer"
            Dim SqlDataSource As String
            Dim SqlUsername As String
            Dim SqlPassword As String
            Dim SqlDatabase As String
            
            Dim cnn As New ADODB.Connection
            
            SqlDataSource = "monserveur"
            SqlUsername = "sa"
            SqlPassword = "sa"
            SqlDatabase = "mabdd"
        
            cnn.Open "PROVIDER=SQLOLEDB;DATA SOURCE=" + SqlDataSource + ";UID=" + SqlUsername + ";PWD=" + SqlPassword + ";DATABASE=" + SqlDatabase
            
            Set Gbl_CnxSqlServer = cnn
            Gbl_CnxSqlOK = True
            Debug.Print cnn.State (1)
        End If
        Debug.Print Gbl_CnxSqlServer.State (2)
        ADO_CnxSQLServer = Gbl_CnxSqlServer
    End Function
    
    
    Function SetRecordSetParticulier()
        Dim cnnSql As New ADODB.Connection
        cnnSql = ADO_CnxSQLServer
        Debug.Print cnnSql.State (3)
    
        Dim tbl As New ADODB.Recordset
        tbl.Open "matable", cnnSql, adOpenDynamic, adLockOptimistic
    
        SetRecordSetParticulier = tbl
    End Function
    Mon problème est le suivant.
    Aux points (1) et (2), l'état de ma connection est toujours active. Que je l'appelle 1 ou plusieurs fois.
    Par contre à l'étape (3), la connextion est toujours fermée ?
    je ne comprend pas pourquoi ...

    Merci de m'éclairer ...

    Aurélien

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    C'est normal, car ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cnnSql = ADO_CnxSQLServer
    tu fais appel à la fonction ADO_CnxSQLServer qui ne renvoi aucune valeur
    il faut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Function ADO_CnxSQLServer() as string
    Je pense que le problème vient de là

    Starec

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    OK merci.
    Vos réponses m'ont permis de trouver le bon chemin ...

    La solution qui fonctionne est la suivante (en gras ce qui a changé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    ' Variable Globale pour la connection serveur
    Public Gbl_CnxSqlServer As ADODB.Connection
    
    ' Connection au serveur SQL Server, via ADODB
    Function ADO_CnxSQLServer() As ADODB.Connection
        If (Gbl_CnxSqlServer Is Nothing) Then
            Debug.Print "ADO_CnxSQLServer: affectation de la variable Gbl_CnxSqlServer"
            
            Dim SqlDataSource As String
            Dim SqlUsername As String
            Dim SqlPassword As String
            Dim SqlDatabase As String
            Dim cnn As New ADODB.Connection
            
            SqlDataSource = "monserveur"
            SqlUsername = "sa"
            SqlPassword = "sa"
            SqlDatabase = "mabdd"
            
            cnn.Open "PROVIDER=SQLOLEDB;DATA SOURCE=" + SqlDataSource + ";UID=" + SqlUsername + ";PWD=" + SqlPassword + ";DATABASE=" + SqlDatabase
            Set Gbl_CnxSqlServer = cnn
        End If
        Set ADO_CnxSQLServer = Gbl_CnxSqlServer
    End Function
    
    
    Function SetRecordSetParticulier() As ADODB.Recordset
        Dim cnnSql As ADODB.Connection
        Set cnnSql = ADO_CnxSQLServer
        Debug.Print cnnSql.State (3)
    
       ... et bla bla ...
    End Function
    J'ai donc bien au point (3) ma connection active !
    Merci

    Aurélien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 29
    Dernier message: 26/06/2006, 12h17
  2. [Problème de persistance d'un BufferedReader]
    Par xarius dans le forum Langage
    Réponses: 2
    Dernier message: 31/05/2006, 21h44
  3. Procedure de connection avec ADO
    Par WOLO Laurent dans le forum Sybase
    Réponses: 3
    Dernier message: 12/05/2006, 08h29
  4. Problème de connection avec ADO
    Par t0ine dans le forum C++Builder
    Réponses: 3
    Dernier message: 07/02/2006, 11h33
  5. Problème LDAP (persistant!!!!!)
    Par onouiri dans le forum Développement
    Réponses: 15
    Dernier message: 27/11/2005, 11h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo