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 :

tables liées entre access et sql serveur express


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut tables liées entre access et sql serveur express
    Bonjour,
    Je voudrai lier au moyen d'un vba des tables d'un serveur sql express avec mon appli en access.
    Mon problème c'est que je reçois à chaque table un écran "Sélectionner la source de donnée" ou je sélectionne mon lien de connexion avec sql serveur et cela fonctionne. Comment supprimer l'affiche de cet écran car dans le code je donne le lien de connexion.
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    If Me.id_type_db <> "ODBC" Then
     
        'Définit la chaine de connexion permettant la liaison des tables
        strConnect = "MS Access;pwd=;DATABASE=" & strCheminBd
         'Instancie l'objet Database de la base protégée
        Set oDbSource = DBEngine.OpenDatabase(strCheminBd, , True, strConnect)
     
     Else
     
         Set ws = DBEngine.Workspaces(0)
     
        'Définit la chaine de connexion permettant la liaison des tables
     
         strConnect = "ODBC; DATABASE=" & Me.id_nom_db_sql & ";uid=;pwd=;DSN =" & Me.id_connexion
     
        'Instancie l'objet Database de la base protégée
        Set oDbSource = ws.OpenDatabase("" & Me.id_connexion, dbDriverNoPrompt, False, strConnect)
     
     End If
     
        'Instancie l'objet Database de la base courante
        Set oDb = CurrentDb
     
         'Parcours l'ensemble des tables de la base de données protégée
        'et stocke leur nom
        For Each oTblSource In oDbSource.TableDefs
            'ignore les tables system
            If (oTblSource.Attributes And dbSystemObject) = 0 Then
                strTemp = strTemp & oTblSource.Name & "|"
            End If
        Next
     
        'Ferme la base de données sources (impératif pour la liaison)
        oDbSource.Close: Set oDbSource = Nothing
     
     
        'parcours le tableau de noms de tables
        strNomsTables = Split(Left(strTemp, Len(strTemp) - 1), "|")
        For i = 0 To UBound(strNomsTables)
            'Crée une nouvelle table dans la base de données courante
            nom_fichier = Mid(strNomsTables(i), 5, Len(strNomsTables(i)) - 4)
     
    '    DoCmd.TransferDatabase acLink, "ODBC Database", strConnect, _
    '        acTable, nom_fichier, strNomsTables(i), , False
     
     
            Set oTbl = oDb.CreateTableDef(nom_fichier)
            'Lie les deux tables
            oTbl.Connect = strConnect
            oTbl.SourceTableName = strNomsTables(i)
            'Ajoute la table à la base de données
            oDb.TableDefs.Append oTbl
     
        Next i
     
        'Rafraichit la liste des tables
        oDb.TableDefs.Refresh
        strTemp = ""


    Merci de votre aide
    Etienne

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Est-ce que ça ne viendrait pas du fait que le nom d'utilisateur et le mot de passe ne sont pas renseignés dans la chaîne de connexion ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        'Définit la chaine de connexion permettant la liaison des tables
          strConnect = "ODBC; DATABASE=" & Me.id_nom_db_sql & ";uid=;pwd=;DSN =" & Me.id_connexion
    Si c'est parce que le mode d'authentification est l'authentification Windows (par opposition à SQL Server) essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        'Définit la chaine de connexion permettant la liaison des tables
          strConnect = "ODBC; DATABASE=" & Me.id_nom_db_sql & ";DSN =" & Me.id_connexion & ";Trusted_Connection=Yes"
    A+

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    J'ai ajouté ce paramètre, mais j'ai toujours le même résultat, l'affichage de cet écran des sources de données...

    A+
    Etienne

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    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 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par etienne8 Voir le message
    J'ai ajouté ce paramètre, mais j'ai toujours le même résultat, l'affichage de cet écran des sources de données...
    Peux-tu poster ta chaîne de connexion telle que tu l'as modifié ?

    Argy

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut table liées
    Voilà ma chaine de caractère:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strConnect = "ODBC; DATABASE=" & Me.id_nom_db_sql & ";uid=;pwd=;DSN =" & Me.id_connexion & ";Trusted_Connection=Yes"
    Dans id_connexion il y a test-dsn qui est le nom que je retrouve dans "Sélectionner source de données " onflet "Source de données machine"

    Merci
    Etienne

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    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 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    A mon avis, tu n'as pas les droits pour utiliser "Trusted_Connection"

    Le DSN que tu as défini a été établi avec ce paramètre ou bien avec un Login/Password ?

    Si option 2 alors il est évident que tu es contraint de te plier à cette configuration dans ton code.

    Argy

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut configuration
    J'ai été dans panneau de config>outils admin>source de données odbc et j'ai ceci
    Fichiers attachés Fichiers attachés

  8. #8
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    J'ai testé ton code et, chose étrange, ça fait la même chose chez moi.

    J'ai testé en réécrivant la chaîne de connexion odbc comme j'ai l'habitude de le faire, c'est à dire en mettant le DSN juste derrière ODBC.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        strConnect = "ODBC;DSN=" & Me.id_connexion & ";DATABASE=" & Me.id_nom_db_sql & ";uid=MonUser;pwd=MonMotDePasse"
    Et là ça fonctionne.

    A+

  9. #9
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    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 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Stairway to heaven
    J'ai testé ton code et, chose étrange, ça fait la même chose chez moi.
    C'est très rare que le Trusted_Connexion soit opérationel en environnement professionnel... Donc rien de surprenant.

    Argy

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Géniale
    Merci beaucoup pour les réponses. j'ai subtilisé ma ligne de code connect par celle donnée avec un mot de passe et un user comme renseignés et cela fonctionne bien que ces champs ne représente rien dans mon application.

    Encore merci à tous

    Etienne

  11. #11
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir Argy,
    Citation Envoyé par argyronet Voir le message
    Citation Envoyé par Stairway to heaven
    J'ai testé ton code et, chose étrange, ça fait la même chose chez moi.
    C'est très rare que le Trusted_Connexion soit opérationel en environnement professionnel... Donc rien de surprenant.
    Argy
    Ce qui m'a surpris, c'est que j'ai reproduit le problème avec une chaîne de connexion dans laquelle DSN=MonDSN est en fin de chaîne.
    Puis que le problème a disparu, quand je l'ai mis au début de la chaîne de connexion.
    Il m'a semblé étrange que l'ordre des paires mot-clé=valeur ait une importance.

    J'ai testé plus finement, et finalement j'ai trouvé que le problème venait de l'espace entre DSN et le signe égal.
    Code posté par Etienne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        strConnect = "ODBC; DATABASE=" & Me.id_nom_db_sql & ";uid=;pwd=;DSN =" & Me.id_connexion
                                                                           ^
                                                                           |
                                                                       espace
    Conclusion : éviter les espaces inutiles pour limiter les risques d'erreur d'interprétation.

    A+

    Ramble On(Led Zepp sur youtube)

Discussions similaires

  1. Erreur de connexion ODBC entre ACCESS et SQL server express
    Par fafa63 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 06/04/2010, 17h33
  2. utilisation sql serveur express
    Par batoubat dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 20/05/2008, 16h21
  3. Réponses: 1
    Dernier message: 02/05/2007, 12h53
  4. Problème de table liées sous Access 2003
    Par FuRioX dans le forum Access
    Réponses: 2
    Dernier message: 05/04/2006, 12h19
  5. Réponses: 2
    Dernier message: 09/02/2006, 14h03

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