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

  1. #61
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 411
    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 411
    Points : 2 162
    Points
    2 162
    Par défaut
    Bonjour,
    Si tu es d'accord on vas faire les choses à l'ancienne !

    Tu as 12 base de données. On vas les gérer une à une pour exécuter manuellement ce que tu voulais faire par macros, mais vue que nous sommes dans Access nous utilisons la version Access en cours !

    1) Tu ouvre ta première base de données.
    2) tu vas dans VBA raccourci clavier [Alt] + [F11]
    3) tu vas dans le menu=>Outils=>Références
    4) tu décoche toutes les librairies Manquantes
    5) tu recherches et coche Microsoft ActiveX Data Object (si plusieurs versions seulement la plus élevée)
    6) tu refermes la base et tu passes à la suivante.

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut
    Thumb down
    Je suppose que ce que tu me proposes de faire "à l'ancienne" est une préparation à la suite, car je voudrais pouvoir créer et supprimer les connections par code.
    N'oublie pas que c'est toi qui m'a incité à passer aux connections à la place des références !
    D'abord, j'ai réduit à 2 le nombre de bases à traiter pour simplifier (je pense que je pourrai en rajouter);
    J'ai procédé aux manipulations suggérées avec le résultat suivant : pas de références Manquantes, j'ai coché "Microsoft ActiveX Data Object 6.1" le N° le plus élevé de la liste.
    Est-ce correct ?

  3. #63
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 411
    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 411
    Points : 2 162
    Points
    2 162
    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.

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut
    J'ai pris bonne note de tes commentaires.
    Alors, maintenant, que dois-je faire pour arriver à ce que je recherche, et qui, d'après ce que j'ai pu lire dans les FAQ et autres docs, est réalisable : pouvoir par code, à tout moment, activer ou désactiver la connection avec la "base" ?
    Lequel des divers codes qui ont été suggérés au cours de nos posts est celui qui convient dans min cas ?
    Merci de ton aide.

  5. #65
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 411
    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 411
    Points : 2 162
    Points
    2 162
    Par défaut
    Oui il est possible d'ajouter une référence par macro.

    Il n'est pas besoin de répété l'opération plusieurs fois une seule suffit.

    Faire une macro pour 12 bases c'est ridicule ! La preuve si tu avais fait la manip que je préconise, c'est à dire à l'ancienne,il y a longtemps que tu aurais fini.

    Ce que je précisais au début de ce poste c'était de remplacer dans tes 12 base l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     dim cn as New connection
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim cn as Object
    Set  cn=creatobject ("AdoDb.Connection")
    Ce qui te permetais d'utiliser ta base sur n'importe quel machine sans te soucier de la version d'ADO.

    Je ne preconisai pas la réécriture de tout le code !

    Notes qu'ADODB est présent sur toutes les machines pourvue d'Access!

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut
    Je te suis bien dans ton raisonnement.
    J'ai bien fait l'opération en 6 points que tu préconises (je ne l'ai fait pour le moment que sur 2 bases, car il est possible que le nombre de 12 change prochainement et voulais voir ce que cela donnerait).

    Où est-ce que je trouve dans les bases l'instruction ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     dim cn as New connection
    Avec tous les codes dont il a précédemment été fait état, je ne m'y retrouve plus.

  7. #67
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 411
    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 411
    Points : 2 162
    Points
    2 162
    Par défaut
    'ai bien fait l'opération en 6 points que tu préconises (je ne l'ai fait pour le moment que sur 2 bases, car il est possible que le nombre de 12 change prochainement et voulais voir ce que cela donnerait).
    si tu as fait le 6 point tu as fini!


    le point suivant c'est si tu n'utilise plus le référence!

    j'espère que tu as bien compris que le seule intérêt d'utiliser la référence ADO c'est de l'utiliser par programme VBA?
    https://mhubiche.developpez.com/vba/...endre/binding/

    tu fais une recherche raccourci clavier [Ctrl] + [F] et tu écrits connection

    Nom : Sans titre.png
Affichages : 164
Taille : 149,0 Ko

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut
    j'espère que tu as bien compris que le seule intérêt d'utiliser la référence ADO c'est de l'utiliser par programme VBA?
    https://mhubiche.developpez.com/vba/...endre/binding/
    Oui et merci pour ce rappel.
    Je n'utilise plus le référentiel et ai donc placé dans la base active, une procédure permettant de mettre en place la connection avec la base quand c'est nécessaire.
    Ctrl + F, c'est la recherche dans le code et par là, j'arrive sur cette procédure qui est le code en question que tu m'avais donné et que j'ai testé sans succès avec l'erreur "impossible de trouver la table 'purchasedriver'".
    J'en suis toujours au même point.
    Je cherche donc toujours pourquoi ce code ne fonctionne pas et j'en reviens à ma question : quel ptovider utiliser ?
    Tu connais certainement bien mieux que moi la question et c'est là que tu peux m'aider à avancer.

  9. #69
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 411
    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 411
    Points : 2 162
    Points
    2 162
    Par défaut
    C'est dans les 12 bases ou tu voulais ajouter la référence par programme !

    Tu peux me donner le nom des douze base en question ?

    J'ai peur que tu n'intervienes pas au bonne endroit !

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut
    Les noms et l nombre peuvent changer au cours du temps et des renseignements reçus.
    Appelons les B1 à Bn.
    J'adapterai.

  11. #71
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 411
    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 411
    Points : 2 162
    Points
    2 162
    Par défaut
    Donc il faut intervenir sur B1 à bn!

    Comment ces bases te parviennent,qui et comment te sont elles fourni !

    C'est sur le modèle de base qu'il faut intervenir.

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut
    Ce sont des bases classiques Access scindées en deux parties : une base de données sous forme de deux tables, la base frontale contenant les attaches vers les 2 tables de données, un état (report) avec sa requête basée sur les tables et une procédure permettant l'impression à distance de l'état par l'intermédiaire de la connection.

    Elles me sont actuellement fournies directement sous cette forme.

  13. #73
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 411
    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 411
    Points : 2 162
    Points
    2 162
    Par défaut
    Citation Envoyé par AndréPe Voir le message
    Ce sont des bases classiques Access scindées en deux parties : une base de données sous forme de deux tables, la base frontale contenant les attaches vers les 2 tables de données, un état (report) avec sa requête basée sur les tables et une procédure permettant l'impression à distance de l'état par l'intermédiaire de la connection.

    Elles me sont actuellement fournies directement sous cette forme.
    tu comprend que le problème est là et que tu ne répond pas à ma question?

    comment veux tu que je t'aide si tu me laisse dans le flou!

    je ne peux rien pour toi!

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut
    Que veux-tu savoir de plus ?
    Les bases sont un peu grosses.
    Je voulais t'envoyer la plus petite en PJ, mais erreur "www.developpez.net indique : fichier non valide". Ce qui explique probablement mes échecs répétés, mais n'explique pas pourquoi je peux tout de même les ouvrir.
    Je regrette et vais rechercher en quoi ces bases ne sont pas valides.
    A demain, je te tiens au courant.

  15. #75
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 411
    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 411
    Points : 2 162
    Points
    2 162
    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.
    reprenons la question du début sur qu'elles base de donné devait s'appliquer cette opération!

    tu peux zip une des base de données impliqué!

    pas la base de donné qui devait execute la macro mais la base de données que devais recevoir cette référence!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Elles me sont actuellement fournies directement sous cette forme.
    qui à défini le modèle ?
    c'est toi qui fourni une base vierge et ton client la replie?

    on est au poste #75 et je ne sais toujours pas de quoi tu me parle!

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut
    Voila d'abord une des bases telles que je la reçois en PJServices_médicaux.zip
    C'est la première fois que j'envoie une PJ sur le forum.
    Dis-moi si c'est bien ce que tu veux.
    J'envoie celle que je veux obtenir dans la matinée.

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut
    Je vais malheureusement être tenu éloigne du forum pour des raisons de santé (pas graves) pendant plusieurs jours.
    Avec mes grands regrets.
    Je reviens dès que possible.
    Merci de ta compréhension.

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut
    Bonjour,
    J'ai pu utiliser mon PC quelques heures et zipper les fichiers que tu demandes:
    - Le point de départ (fichiers reçus) Services_medicaux.zipServices_medicaux_Don.zip
    Tu as dû déjà les recevoir en PJ, il y a eu depuis des modifications : à supprimer
    - La base que je voudrais obtenir MED_AC03.zipMED_Don_AC03.zip à titre exemple
    - Un extrait de la base active à partir de laquelle seront commandés par boutons (à ajouter en fonction des besoins, par ex afficher un état, crer doc pour Généanet) PortailAC03_V70_04.zipPortailDonnéesAC03_V59_07.zip
    Ces fichiers ont dû être simplifiés pour rester dans les limites du forum (2Mo max)
    Bonne journée

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut
    Je m'aperçois que j'ai omis de répondre à ta dernière question
    qui à défini le modèle ?
    c'est toi qui fourni une base vierge et ton client la replie?
    Le modèle existe depuis longtemps et il est très classique, comme il répondait à nos besoins, pas nécessaire de le modifier.
    Mon "fournisseur" est la personne qui rassemble les informations relevées par les membres du cercle, complète ou crée de nouvelles entrées dans le fichier de données des différentes bases.

    Je suis libre de mon choix dans le cadre des besoins : le Portail est destiné aux membres du groupe actif du cercle qui ont à répondre aux questions posées par les lecteurs de la revue ou du site de Geneanet auquel je fournis 2 fois par an en principe un index (table à 6 champs reprenant en particulier les noms, prénoms, dates encadrant l'événement correspondant à chaque ligne de l'index).
    Chaque ligne de l'index porte un numéro (unique pour chaque base) précédé du sigle de la base (ANN, DIS, PLA, MED, etc).
    Les recherches dans le Portail portent sur l'existence d'un nom/prénom dans l'index, d'où possibilité d'afficher/imprimer l'état correspondant qui contient alors toutes les infos de la table de données de la base concernée.
    Si on connait la référence de la fiche, on peut directement l'afficher/imprimer.

    Ce système a fait ses preuves jusqu'à ce que l'on passe à des bases scindées, rendant ainsi à mon "fournisseur" et à moi-même plus facile la modification du code sans toucher aux données en ne modifiant que la base frontale, la dorsale (données restant inchangée).

    Mais le fait que l'appel à une base à partir de la base active fait que par suite des "références" , la base en question est considérée comme ouverte et est impossible à modifier.
    C'est pourquoi je pensé que les connections élimineraient ce problème.

    Excuse moi si j'ai été un peu long, mais c'était nécessaire, tout au moins je le crois.
    A ta disposition pour d'autres questions éventuelles.
    Cordialement

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, 10h06
  2. Comment faire une recherche dans ACCESS
    Par Bass_Room dans le forum Access
    Réponses: 2
    Dernier message: 02/06/2006, 11h51
  3. Réponses: 5
    Dernier message: 01/06/2006, 12h36
  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, 15h27
  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, 21h21

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