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 :

Comment ajouter une référence dans MS Access ?


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Par défaut
    loufab, merci.

    Je n'ai pas choisi la version 21, elle était dans les références en place de mon appli.
    J'ai aussi les versions 25, 26, 27, 28 et 60.

    Dans le code que tu proposes, où apparaît ce N° de version ?

    A la ligne 6 "chemin et fichier de ton composant" je dois donc indiquer la base B2 que je souhaite référencer dans l'appli ?
    Cordialement.

  2. #2
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Bonjour,
    Qu'elle type de base de données utilises tu?
    Access, Oracle, SQL serveur, MySQL?

    ODBC c'est si tu utilises un DNS via le gestionnaire ODBC de windows.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Par défaut
    Thumb down
    Ce sont toutes des bases Access classiques.
    Ce type n'existe pas nominativement dans ta liste.
    Quel type dois-je prendre ?

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 135
    Par défaut
    Plus de nouvelle de AndréPe ? La question semble réglée.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Bonjour,
    Dans tes explications,tu dis que les 12 bases de données ce trouve dans le même répertoire que la base active !

    CurrentProject.Path te donne le chemin de la base de données active.
    Il te faut utiliser CurrentProject.Path pour déterminer le nom complet pour les 12 base.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Base=CurrentProject.Path & "\BaseNumerot12.mdb"
    https://grenier.self-access.com/acce...se-de-donnees/

  6. #6
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Citation Envoyé par AndréPe Voir le message
    Bonjour,
    La FAQ ACCESS "Comment lister les références" donne in fine le code suivant pour ajouter une référence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    References.AddFromFile("C:\Program Files\Common Files\System\ado\msado21.tlb ")
    A quoi correspondent les termes de la partie en rouge ?
    J'ai utilisé avec succès le code qui figure au début de cette FAQ pour lister les références de mon projet.
    Merci de votre aide éventuelle.
    bonjour,
    si tu nous exposais le problème car j'ais l'impression qu'on ce fourvoie!

    pourquoi veux tu ajouter une reference alors q'il te suffis de les supprimer toutes et d'utilser ce code!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test()
     Dim cn As Object: Set cn = CreateObject("Adodb.connection")
     cn.Open ConnectionString
     cn.Close
    End Sub

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Par défaut
    Thumb down, tu as raison, je pense aussi qu'on se fourvoie !
    J'aurais dû commencer par cela.

    Mon appli est un portail de généalogie, pour ne rien vous cacher, il s'agit de l'association "Cercle généalogique des cheminots".
    Dans un même répertoire j'ai
    - la base active BA, d'où partent les commandes
    - une douzaine de bases B(n) contenant des données spécifiques (tables, états et leur requêtes), le nombre et le contenu de ces B(n) étant susceptible de varier en fonction des informations reçues de nos correspondants.

    Les B(n) sont référencées dans BA pour lui permettre de récupérer à la demande l'état correspondant à un individu donné dans une B(n) donnée.

    Grâce à la FAQ Access, j'ai pu lister les références existantes et constater qu'elles utilisaient la version 21 de ado, mais j'ai été incapable par le code de créer une référence avec une nouvelle base.
    C’est le problème que je tente de résoudre avec l'aide du forum.
    Manuellement, pas de difficulté majeure, si ce n'est pouvoir donner un nom spécifique à la référence qui est un groupe de 3 lettres, ce que le code devrait permettre.

    Je ne sais si j'ai été assez clair, merci de me le dire.
    Cordialement.

  8. #8
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    désolé voila pour Access!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ConectionString= "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier & ";"

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Par défaut
    Donc dans mon cas la dara source serait une des 12 bases.
    Il n'est pas demandé d'user.
    Je n'ai rien trouvé dans Window qui ressemble à ACE.OLEDB
    J'essaie, mais erreur 446 -> "Cet objet ne gère pas les arguments nommés."
    A+

  10. #10
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 135
    Par défaut
    Si par "liaison" tu désignes une table attachée qui va apparaitre dans la liste des tables avec le petit symbole link. Effectivement tu as faux, ce code ne permet pas cela.

    La méthode indiquée permet de SE CONNECTER à une base pour exécuter des instructions SQL (select, update, delete, insert, create...) sur ses tables sans avoir besoin de les attacher.

    Il n'y a donc qu'une et qu'une seule base, celle à laquelle tu te connectes.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  11. #11
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Bonjour,
    Je pense que notre ami est dépité et a jeté l'éponge !
    Je l'ai dissuader de persister dans son intention d'ajouter une référence dans ses 12 fichier MDB.

    Je n'est pas réussi à le convaincre d'intervenir sur ces 12 fichier pour modifier la connexion via AdoDb!
    Vue qu'avec creatobject plus besoin des références,en revanche il faut installer le MDAC!

    Au pire il pouvais même ce passer d'ADO en faisant de jointure externes dans ses requête.

    Depuis nous bouclons sur un dialogue de sourds !

  12. #12
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 135
    Par défaut
    La question principale c'est pourquoi par code ?
    La secondaire pourquoi une version aussi ancienne d'ADO ? Je sais que la SNCF est la spécialiste du retard mais c'est pour les trains en principe.

    "Manuellement, pas de difficulté majeure, si ce n'est pouvoir donner un nom spécifique à la référence qui est un groupe de 3 lettres, ce que le code devrait permettre."
    Je ne comprend pas c'est quoi ce groupe de 3 lettres ?
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Par défaut
    #loufab
    - Pourquoi par code : parce que il est fastidieux de traiter manuellement une série de 12 bases par exemple pour en tirer un index général qui servira à alimenter un site donnant les noms des nouvelles entrées dans le portail.
    - Pourquoi une version aussi ancienne d'ADO :parce que le portail ne date pas d'aujourd'hui, mais je suppose que pour utiliser une version plus récente, il faut refaire les références et je ne veux pas m'y aventurer avant d'être certain de pouvoir les recréer.

    - Ce groupe de 3 lettres est simplement le début du nom de chaque B(n). Au lieu par exemple de "Annuaires" on utilise "ANN" c'est moins long dans le code.

  14. #14
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    bonjour,
    désolé j'ai juste oublié qu'il s'agissait d'une ancienne version!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ' ACCESS97     
        GenereCSTRING = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & Fichier
            'ACCESS2000
            GenereCSTRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Fichier & ";Persist Security Info=False"
        'ACCESS2012
            GenereCSTRING = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier & ";"

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Par défaut
    Thumb down
    On avance !
    Avec tes nouvelles données, il fallait "connectionString" et non "genereCSTRING" inconnu
    Voici le code que j'ai utilisé
    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
    Dim cn As ADODB.Connection
    Dim cmd As ADODB.Command
    Dim insQuery  As String
    Set cn = New ADODB.Connection
    Set cmd = New ADODB.Command
    Base = "C:\CGCPortail\MED_AC03.mdb"
    cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Base & ";Persist Security Info=False"
    insQuery = "INSERT INTO purchasearchive VALUES (" & Chr(34) _
            & PUID & Chr(34) & "," & Chr(34) _
            & cardNum & Chr(34) & "," & Chr(34) _
            & cardType & Chr(34) & "," & Chr(34) _
            & productID & Chr(34) & ",#" _
            & Date & "#," _
            & Number & ");"
    cn.Open
    cmd.ActiveConnection = cn
    Debug.Print insQuery
    cmd.CommandText = insQuery
    cmd.Execute
    Ca bloque sur la ligne 19 "erreur dans l'instruction INSERT INTO"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insQuery = "INSERT INTO purchasearchive VALUES ("","","","",#18/09/2020#,);"
    J'ai trouvé dans Microsoft sur mon PC des OLEDB mais pas de jet.OLEDB.

    Qu'en penses-tu ?

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Par défaut
    Peux-tu me confirmer que le fichier provider doit se trouver dans mon PC (où se trouve la base active), dans "C:\Programmes\commonFiles\System\".
    Si c’est exact je peux alors essayer les quelques fichiers qui s'y trouvent ?
    Sinon, il me faut trouver le fichier qui va bien, mais où ?
    A+

  17. #17
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Non je parle de liaison externes SQL in('c:\base.mdb')
    Ce qui permet de faire des requêtes SQL sur une base externes sens la rattacher et sans ado!

    J'imagine que la version d'Access avec laquelle il ouvre ses base est plus récente !

    Il me paraît donc plus logique de faire coller les wagons que de vouloir instencier une vieille version ado.

    C'est pour cela que je préconise d'utiliser creatobject dans ces 12 base plutôt que de référencer un ado datant de Mathusalem !

    A tous prendre,il serait plus logique d'ouvir les base de données une à une,. De décocher les références manquantes puis de réactivité les références Ado!
    ça représente quoi? 20 minutes de travail? c'est rien au vue des heures que nous avons passé sur ce sujet!

  18. #18
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Si on utilise Ado c'est uniquement pour accéder à une base de données par programme !

    Donc pas besoin de référence mais de creatobject et là la seule version d'Ado sera celle de la machine.

    Arrêtes de te compliquer la vie!

    Personnellement je me les taperai les 12 bases. Question de point de vue !

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Par défaut
    loufab #
    Peux-tu me dire où, dans le code que tu proposes, apparaît le N° de version de ado ?
    A la ligne 6 "chemin et fichier de ton composant" je dois donc indiquer la base B2 que je souhaite référencer dans l'appli ?
    Merci de ton aide.

  20. #20
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Bonjour,
    Personnellement j'ai toujours pas compris pourquoi tu avais besoin d'ado!

Discussions similaires

  1. [XL-365] Comment déclarer une plage dans un tableau en VBA
    Par alive85 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 26/06/2020, 09h06
  2. Comment faire une recherche dans ACCESS
    Par Bass_Room dans le forum Access
    Réponses: 2
    Dernier message: 02/06/2006, 10h51
  3. Réponses: 5
    Dernier message: 01/06/2006, 11h36
  4. Comment déclarer une DataSource dans server.xml
    Par guillaume06 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 16/06/2004, 14h27
  5. Comment créer une Table dans 1 Bdd ACCESS avec Builder??
    Par makandja dans le forum C++Builder
    Réponses: 6
    Dernier message: 17/03/2004, 20h21

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