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

Access Discussion :

Connexion Odbc en VBA


Sujet :

Access

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Connexion Odbc en VBA
    Bonjour,

    j'ai une base de donnée qui contient des tables liés via ODBC.
    je voudrais faire un bouton qui permet de se logguer à ODBC via le code VBA.

    j'ai récupérer le code de la FAQ.
    le code semble fonctionner mais si j'ouvre une table lié, je doit me reconnecter manuellement à l'ODBC.
    Comment faire pour que la connection à l'ODBC soit définitive ?
    merci pour votre aide

    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
    43
    44
    45
    46
    47
     
    Public Function InitConnection(DSN As String, UserName As String, PassWord As String) As Boolean
      Dim query As String
      Dim cnxString As String
      Dim RequeteOk As Boolean
      Dim ADOCnx As ADODB.Connection
      Set ADOCnx = New ADODB.Connection
     
      'Dim mRst As New ADODB.Recordset
     
      InitConnection = False
      'Initialisation de la chaine de connexion
      ADOCnx.ConnectionString = "DSN=" & DSN & ";"
     
      'Vérifie que la connexion est bien fermée
      If ADOCnx.State = adStateOpen Then
        MsgBox ("ferme la connection")
        ADOCnx.Close
      End If
      On Error GoTo BadConnection
      'Connexion à la base de données
      ADOCnx.Open cnxString, UserName, PassWord
      'Attente que la connexion soit établie
      While (ADOCnx.State = adStateConnecting)
        DoEvents
       Wend
      'Vérification des erreurs dans le cas d'une mauvaise connexion
      If ADOCnx.Errors.count > 0 Then
        'Affichage des erreurs
        MsgBox ADOCnx.Errors.Item(0)
        InitConnection = False
        Exit Function
      Else
        InitConnection = True
       End If
       Exit Function
     
    BadConnection:
    If ADOCnx.Errors.count > 0 Then
        'Affichage des erreurs
        MsgBox ADOCnx.Errors.Item(0)
        InitConnection = False
        Exit Function
    Else
        MsgBox err.Description
    End If
    End Function

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 124
    Points : 12 176
    Points
    12 176
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Tu peux jeter un oeil à ce post.

    Argy

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Je voudrais simplement simuler la connection manuelle ODBC sans avoir à lister les tables liées qui sont nombreuses et qui vont etre modifiées.

    En manuel, si je me connecte une seul fois via odbc, je peut ensuite ouvrir n'importe quelles tables liées via odbc.

    Actuellement, j'ai un bouton "login" qui ouvre une table ce qui a pour effet d'afficher la boite de connection odbc puis je referme la table.

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 124
    Points : 12 176
    Points
    12 176
    Billets dans le blog
    5
    Par défaut
    Hummm, et alors ???
    Quel est le problème en fait ?

    Argy

  5. #5
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    au lieu de devoir insérer le user et le mot de passe dans la boite de dialogue ODBC, je voudrais faire la connection via vba, comme ca : il n'y a plus besoin de rentrer le user et le mot de passe dans cette boite de dialogue.

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 124
    Points : 12 176
    Points
    12 176
    Billets dans le blog
    5
    Par défaut
    Eh bien dans ce code (du post en question ), ce que tu demandes correspond ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strConnect = "ODBC;DSN=" & DSN & ";UID=" & UID & ";PWD=" & PWD & _
      ";DATABASE=" & DB
    C'est à toi de le définir soit codé dans une table, dans un fichier ou encore dans la base de Registre...
    Et le tour est joué.

    Argy

    Argy

  7. #7
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Salut,

    j'ai repris le code, j'ai une erreur (Table "NomTable" already exist) par contre suite à cette erreur je suis bien connecter à l'odbc et je peux ouvrir les autres tables linkés sans problème...

    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Set oDB = CurrentDb
    strConnect = "ODBC;DSN=" & NomduDSN & ";UID=" & NomUtilisateur & ";PWD=" & MotDEPasse
    Set oTD = CurrentDb.CreateTableDef(NomTable)
    oTD.Connect = strConnect
    oTD.SourceTableName = (NomTable)
     
    oDB.TableDefs.Append oTD 
    'c'est cette ligne qui fait que la connection ODBC fonctionne ensuite, mais c'est aussi cette ligne qui provoque le message d'erreur.
    Est ce que je pourrais remplacer cette ligne par autre chose pour ne pas avoir d'erreur ?

  8. #8
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 124
    Points : 12 176
    Points
    12 176
    Billets dans le blog
    5
    Par défaut
    Si tu as bien lu le code, tu vois cette instruction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If TableIsAlreadyAttached(TableName) Then Exit Sub
    A toi de la développer;
    Si tu n'y arrives pas, alors je t'envoie le code.

    Argy

  9. #9
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Salut,

    je veux bien le code.

    Merci

  10. #10
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 124
    Points : 12 176
    Points
    12 176
    Billets dans le blog
    5
    Par défaut
    C'est ce qu'il s'appelle chercher par soit-même !!!

    Bon, je me fends d'un peu de code...
    C'est pourtant ultra simple comme fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Function TableIsAlreadyAttached(ByVal TableName As String) As Boolean
    Dim oRS As DAO.Recordset
      
      On Error GoTo Not_Exist
      Set oRS = CurrentDb.OpenRecordset("SELECT * FROM " & TableName, 2)
      TableIsAlreadyAttached = (Not oRS Is Nothing)
      oRS.Close
      
    Check_Exist:
      Set oRS = Nothing
      Exit Function
    Not_Exist:
      Resume Check_Exist
    End Function
    Argy

Discussions similaires

  1. [XL-2007] vba et mysql avec une connexion ODBC
    Par canichon dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/10/2014, 11h05
  2. Connexion ODBC SQL Server en VBA
    Par quanou dans le forum VBA Access
    Réponses: 1
    Dernier message: 13/09/2013, 15h55
  3. VBA connexion ODBC
    Par olivmad2000 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/12/2010, 13h33
  4. [AC-2003] Réparer une connexion ODBC en VBA
    Par Fiery dans le forum VBA Access
    Réponses: 0
    Dernier message: 15/09/2010, 13h28
  5. [XL-2003] VBA connexion ODBC sous Excel
    Par Lomath dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/08/2010, 11h24

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