Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2012, 12h02   #1
Invité de passage
 
Inscription : novembre 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 6
Points : 0
Points : 0
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 :
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
etienne8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 19h34   #2
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 940
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 : 3 940
Points : 6 279
Points : 6 279
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 :
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 :
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+
LedZeppII est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 12h02   #3
Invité de passage
 
Inscription : novembre 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 6
Points : 0
Points : 0
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
etienne8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 12h46   #4
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 661
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 661
Points : 6 228
Points : 6 228
Envoyer un message via MSN à argyronet
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
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 15h51   #5
Invité de passage
 
Inscription : novembre 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 6
Points : 0
Points : 0
Par défaut table liées

Voilà ma chaine de caractère:
Code :
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
etienne8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 16h18   #6
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 661
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 661
Points : 6 228
Points : 6 228
Envoyer un message via MSN à argyronet
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
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 16h35   #7
Invité de passage
 
Inscription : novembre 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 6
Points : 0
Points : 0
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
Type de fichier : docx source_odbc.docx (316,6 Ko, 4 affichages)
etienne8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 20h24   #8
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 940
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 : 3 940
Points : 6 279
Points : 6 279
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 :
    strConnect = "ODBC;DSN=" & Me.id_connexion & ";DATABASE=" & Me.id_nom_db_sql & ";uid=MonUser;pwd=MonMotDePasse"
Et là ça fonctionne.

A+
LedZeppII est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 22h27   #9
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 661
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 661
Points : 6 228
Points : 6 228
Envoyer un message via MSN à argyronet
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
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 16h19   #10
Invité de passage
 
Inscription : novembre 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 6
Points : 0
Points : 0
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
etienne8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 20h27   #11
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 940
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 : 3 940
Points : 6 279
Points : 6 279
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 :
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)
LedZeppII est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h02.


 
 
 
 
Partenaires

Hébergement Web