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 Comment ajouter une référence dans MS Access ?
    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.

  2. #2
    Membre émérite Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 980
    Par défaut Comment ajouter une référence dans MS Access ?
    Salut!

    De la doc ici.

  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
    ric500 merci.
    Je ne suis pas un expert en Access, mais je ne comprends absolument pas à quoi correspondent ces termes en rouge et comment je peux me servir des données du lien que tu indiques pour résoudre mon problème.
    Je continue à rechercher
    Cordialement.

  4. #4
    Membre émérite Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 980
    Par défaut Comment ajouter une référence dans MS Access ?
    Bonjour AndréPe,

    Quand tu ajoutes une référence, c'est pour utiliser un code extérieur à ton application (on dit aussi bibliothèque). Ce code peut-être contenu dans un fichier de DLL ou dans une autre base Access...

    La partie en rouge représente le chemin d'accès et le fichier contenant ce code externe.

  5. #5
    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
    Bonjour,
    Mes tentatives échouent.
    J'ai donc pris la décision de rechercher d'autres chemins et d'interrompre la discussion sur cette question.
    Je remercie tous ceux qui y ont participé.
    De leurs suggestions il me restera certainement pas mal de choses utiles.
    Cordialement.

  6. #6
    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
    Bonjour,
    Après une trop longue pause forcée, je reprends mes recherches.
    Le fichier msado21.tbl existe bien dans mon W10.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    References.AddFromFile ("C:\Program Files\Common Files\System\ado\msado21.tlb ")
    Cette commande donne "Nom de module, de projet ou de bibliothèque d'objets déjà utilisé", ce qui est exact mais concerne une autre base.
    Où place-t-on le nom de la nouvelle base à référencer ?

  7. #7
    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 tu fournis le code,je pourrais t'expliquer comment le modifier.

  8. #8
    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
    J'ai eu le temps de regarder les forums et les tutoriels et ai réalisé que la méthode que tu proposes devrait permettre plus de souplesse dans cette question des liens, références ou connections, et je vais approfondir mes connaissances à ce sujet.

    Je voudrais bien te fournir mon code, mais la seule ligne qui doit contenir du code personnel est la ligne 3 et je ne sais pas ce qu'il convient d'y mettre pour pouvoir afficher l'état "Fiche" de B1, dont la requête source est "req1" à partir de la base active BA située dans le même répertoire de C:\.
    Que te faut-il de plus ?
    C'est là que j'ai besoin de ton aide.
    Bon dimanche.

  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
    En attendant ta réponse, j'ai fait plusieurs essais, mais à chaque fois erreur ligne ""cn.open connectingstring".
    Je ne sais plus quoi faire, bien que ta méthode me semble effectivement plus souple que par les références.
    La lecture des tutoriels ne m'a pas apporté de solution valable.

    Toute aide éventuelle serait la bienvenue.

  10. #10
    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
    Je suis inquiet de ne pas recevoir de réponse de ta part et espère qu'il ne t'est rien arrivé de grave.
    Et suis aussi étonné que personne d'autre que toi n'ait encore donné son avis sur ma question.

    Serait-ce trop complexe ?

    Cordialement

  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
    Pour ce qui concerne le provider je te suggère de faire une recherche du MDAC sur internet et de l'installer sur ta machine.
    Le MDAC contient toutes les informations de connexion aux base de données.

  12. #12
    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,
    Application.CurrentProject.Path donne le répertoire de la base de données active.

    Si la base de données,don j'ignore le nom,ce trouve dans le même répertoire il te suffit de concaténer !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    base=Application.CurrentProject.Path &"\PortaiACO3_V70_04.mdb"
    J'essaie de te répondre en fonction des informations que tu me donnes !

  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
    Merci de ta rapide réaction.
    Je reprends mes questions en essayant de bien les expliciter :

    1) Si j'ai bien compris ton code, je pense qu'il est fait pour créer un lien entre ce qu'il appelle l'"application" et la "base" ?
    L'application est "C:\CGCPortail", répertoire qui contient la base active 'PortailACO3_V70_04.mdb" et, entre autres, la base avec laquelle je recherche à créer une connection, "MED_ACO3.mdb".

    2) Le provider utilisé doit-il être effectivement présent ? (ce n'est pas le cas sur mon PC)
    La réponse est probablement 'oui', mais où le trouver s'il n'est pas encore présent ?

    Est-ce clair ?

  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,
    Oui c'est correcte.
    Oui je t'ai insisté à changer ton fusil d'épaule, mais je me rends compte qu'il est difficile de ce comprendre !

    C'est pour cela que je suis revenu en arrière !

    Utiliser une macro pour référencer une librairie obsolète, alors que tu utilises Access ne rime à rien car Access dispose de cette librairie dans une version actuelle !
    Notes que nous en sommes à 62 postes et nous en sommes toujours au même point !

    De plus ce genre de travail ne ce fait qu'une seule fois pas besoin d'exécuter une macro plusieurs fois par jour surtout qu'il est nécessaire de tester l'existence d'une ou plusieurs instances de cette librairie.

  15. #15
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 132
    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 132
    Par défaut
    Bonjour,

    Non ça ne marche pas comme ça. L'instruction travaille sur l'application active.

    Tu dois d'abord ouvrir l'instance de cette application puis utiliser la méthode sur cet objet application.

    Cordialement,
    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

  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
    J'ai suivi (tout au moins je le pense !) tes conseils et, pour tester, ai créé dans l'application active une procédure, commandée par le bouton "cmdRef", qui contient la ligne en question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     References.AddFromFile ("C:\Program Files\Common Files\System\ado\msado21.tlb ")
    Le résultat est le même.
    A noter que la base active est dans le le même répertoire que la dizaine de bases auxquelles elle est déjà référencée
    Je voudrais ajouter (par le code) une autre base B2 qui est aussi dans ce même répertoire.
    Où dois-je placer le nom/chemin de B2 ?
    Merci de ton aide.
    Bonne journée.

  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
    en fonction du type de base de données!

    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
    'MySQL
        ConectionString= " DRIVER={MySQL ODBC 5.1 Driver};SERVER=" & Server & ";UID=" & User & ";DATABASE=" & Base & ";Password=" & PassWord
        'ODBC
            ConectionString= "Provider=MSDASQL.1;Password=" & PassWord & ";Persist Security Info=True;User ID=" & User & ";Data Source=" & Base
        'ORACLE
            ConectionString= "Provider=OraOLEDB.Oracle.1;Password=" & PassWord & ";Persist Security Info=True;User ID=" & User & ";Data Source=" & Base
        'SQLSERVER2005
            ConectionString= "Provider=SQLOLEDB.1;Password=" & PassWord & ";Persist Security Info=True;User ID=" & User & ";Initial Catalog=" & Base & ";Data Source=" & Server
        'SQLServer2008R2
            ConectionString= "Provider=SQLNCLI;Server=" & Server & ";Database=" & Base & ";UID=" & User & ";PWD=" & PassWord & ";"
        'SQLite
            ConectionString= "Driver={SQLite ODBC (UTF-8) Driver};Database=" & Fichier & ";StepAPI=;Timeout="
        'SQLite3
            ConectionString= "Driver={SQLite3 ODBC Driver};Database=" & Fichier & ";LongNames=0;Timeout=4000;NoTXN=0;SyncPragma=NORMAL;StepAPI=0;"
        'CSV
            ConectionString= "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Server & ";Extended Properties=""Text;HDR=" & Array("No", "YES")(Abs(True/false)) & ";FMT=Delimited;"""

  18. #18
    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
    Et là, c'est pour moi un grand saut dans l'inconnu (ou plutôt dans le pas encore connu !)
    D'abord, quel type de bases ?
    Je pense qu'il s'agit d'ODBC, mais je n'ai pas trouvé pour provider de fichier avec un nom du genre MSDASQL.1, mais MSDASQL.dll sans N°
    Pour l'user ID je suppose qu'il s'agit de la base active et pour le dataSource de la base utilisée B2 par ex.
    Avec ces données : cn.connectingString -> erreur 446 "Cet objet ne gère pas les arguments nommés".

    Où est l'erreur ? Me serais-je trompé de type de base ?

    J'ai noté qu'ensuite, insQuery utilise des variables qui n'ont pas encore été définis mais le seront par probablement cn.connectingstring.
    J'ai encore beaucoup à apprendre dans ce domaine des connections.
    Cordialement.

  19. #19
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 132
    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 132
    Par défaut
    Bonjour,

    le chemin de l"application est celui donné par le système, soit le répertoire, donc pas trace de la base active.
    Pourquoi tu veux utiliser le nom de la base active dans ce code ?

    J'ai donc essayé de remplacer la lien 1 (debug) par "Application.CurrentProject.Path=C:\CGCPortail\Portail_AC03_V70_04.mdb", mais erreur "impossible d'affecter une propri"t" en lecture seule".
    Si je supprime "Parh" : erreur "Propriété non gérée par cet objet".
    Path est une propriété en lecture seule. Avant d'essayer d'affecter une valeur à une propriété il faut d'abord s'assurer qu'elle le permet. Il te faut consulter l'aide pour le savoir.
    Je ne sais plus quoi faire pour introduire le nom de la base active qui ets le plus important.
    On en revient à la question précédente, pourquoi tu en as besoin dans ce code ? Et pourquoi tu penses que c'est le plus important ?

    Cordialement,
    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

  20. #20
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 132
    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 132
    Par défaut
    Pour charger dans un autre fichier applicatif il faut que Application soit ouvert sur le fichier accdb.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim appaccess  As New Access.Application
    Set appaccess = CreateObject("Access.Application")
    appaccess.Visible = False
    appaccess.OpenCurrentDatabase "le chemin et le fichier de ton application", False
    appaccess.References.AddFromFile "chemin et fichier de ton composant"
    appaccess.Quit acQuitSaveNone
    Set appaccess = Nothing
    Pourquoi tu charges cette vieille version ?
    Tu n'as pas le 2.8 plutôt ?
    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

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