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
    Thumb down Bonjour,
    Je me demande si nous parlons bien de la même chose.
    Lorsque, dans le code d’une appli, tu cliques sur"outils/références" tu obtiens une liste de références précédées d'une case à cocher.
    A partir de la on peut supprimer une référence ou en ajouter manuellement.

    La FAQ Access donne une méthode pour lister ces références, et c'est là que ado apparaît. Je ne sais si j'en ai besoin, mais il est bel et bien présent, voilà ce que je peux te répondre.
    Cette FAQ donne ensuite une méthode pour en créer par le code et c'est là que j'aurais besoin d'explications.

    Je constate avec regrets que l'unanimité n’existe pas parmi les réponses que je reçois de personnes plus qualifiées que moi dans ce domaine.
    Mais je ne désespère pas d’obtenir un jour la solution à mon problème que d'autres se sont certainement déjà posé et ont résolu !

    Merci de vos conseils
    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,
    je t'invite à jeter un œil à ce poste là: https://www.developpez.net/forums/d2.../#post11114849

  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
    Merci, je vais regarder.
    Mais quelle est ta réponse à ma question sur la position du fichier provider ?

  4. #4
    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 crois que je vais abandonner, car ce domaine m'est totalement étranger et je ne peux me fier qu'à toi, le seul qui ait répondu à ma demande.
    Il me semble que le code que tu m'as proposé demande à être complété par des nz, mais je ne sais absolument pas ce que sont les variables de l'insQuery (PUID, Cartnum, cardtype, ProductID) ni où les trouver, alors comment puis-je savoir s'il faut nz ou non ?
    Ta méthode m'a séduit car elle m'a paru s’affranchir des classiques genre SQL et être plus claire à installer, ce qui pour moi, ne se confirme maintenant pas.

    Je continue cependant à chercher.

  5. #5
    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
    Ce qui permet de faire des requêtes SQL sur une base externes sens la rattacher et sans ado!
    Je ne suis pas d'accord avec ce qui est en gras.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With CreateObject("Adodb.connection")
    Jusqu'à preuve du contraire c'est bien de l'ADO qui est utilisé.
    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

  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
    pour être Certain que nous parlons bien du même code, le voici (bien qu'il prenne pas mal de place).
    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
    Sub Test()
    Debug.Print Application.CurrentProject.Path
    Dim Base As String
    With CreateObject("Adodb.connection")
        Base = "C:\CGCPortail\MED_AC03.mdb"
       .Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Base & ";Persist Security Info=False"
       insQuery = "INSERT INTO purchasearchive VALUES (" _
            & TrouveTypeSql(PUID) & "," _
            & TrouveTypeSql(cardNum) & "," _
            & TrouveTypeSql(cardType) & "," _
            & TrouveTypeSql(productID) & "," _
            & TrouveTypeSql(Date) & "," _
            & TrouveTypeSql(Number) & ");"
            Debug.Print insQuery
            .Execute insQuery
       .Close
    Debug.Print insQuery
    End With
     
     
    End Sub
    Function TrouveTypeSql(V)
    TrouveTypeSql = Trim("" & V)
    If Trim("" & TrouveTypeSql) = "" Then TrouveTypeSql = "Null": Exit Function
    If IsDate(TrouveTypeSql) = True And InStr(TrouveTypeSql, "/") <> 0 And InStr(TrouveTypeSql, ":") <> 0 Then TrouveTypeSql = "#" & Format(TrouveTypeSql, "yyyy-mm-dd hh:mm") & "#": Exit Function
    If IsDate(TrouveTypeSql) = True And InStr(TrouveTypeSql, "/") <> 0 Then TrouveTypeSql = "#" & Format(TrouveTypeSql, "yyyy-mm-dd") & "#": Exit Function
    If IsNumeric(Replace(TrouveTypeSql, ".", ",")) = True Then TrouveTypeSql = Replace(TrouveTypeSql, ",", "."): Exit Function
    TrouveTypeSql = "'" & Replace(TrouveTypeSql, "'", "''") & "'"
    End Function
    Je vais essayer demain matin ce code, et vous tiens au courant, car je dois maintenant partir.
    A+

  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
    Thumb down Bonjour,
    Je me demande si nous parlons bien de la même chose.
    Lorsque, dans le code d’une appli, tu cliques sur"outils/références" tu obtiens une liste de références précédées d'une case à cocher.
    A partir de la on peut supprimer une référence ou en ajouter manuellement.
    Oui nous parlons exactement de la même chose.

    Activer les références permet,dans ton ca, d'utiliser un objet Ado par programme uniquement.

    Il est possible de ce passer des références en utilisant en lieu et place de new Adodb dans ton programme la méthode CreateObject.

    C'est à toi de faire le choix tu persiste à vouloir importer ta librairie ou tu te facilites la vie avec CreateObject ,et il n'y a plus de problème de version, c'est simple ?

  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
    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
    Je voudrais essayer ta méthode, mais d'abord je ne trouve pas dans mon programme la méthode "new Adodb" dont tu parles.

    Ensuite, que dois-je mettre pour "ConectionString" si je veux créer les liens des bases B(n) avec ma base active BA ?

    A+

  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
    Thumb down
    Un exemple précis : Je veux créer une connection avec la base B1 à partir de la base BA active, toutes deux dans le même répertoire, pour ouvrir l'état "Fiche" contenu avec sa requête et la table de données dans B1.
    Quelle serait la ligne 3 ?

  10. #10
    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
    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
    Sub Test()
    Debug.Print Application.CurrentProject.Path
    Dim Base As String
    With CreateObject("Adodb.connection")
        Base = "C:\CGCPortail\MED_AC03.mdb"
       .Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Base & ";Persist Security Info=False"
       insQuery = "INSERT INTO purchasearchive VALUES (" _
            & TrouveTypeSql(PUID) & "," _
            & TrouveTypeSql(cardNum) & "," _
            & TrouveTypeSql(cardType) & "," _
            & TrouveTypeSql(productID) & "," _
            & TrouveTypeSql(Date) & "," _
            & TrouveTypeSql(Number) & ");"
            Debug.Print insQuery
            .Execute insQuery
       .Close
    Debug.Print insQuery
    End With
     
     
    End Sub
    Function TrouveTypeSql(V)
    TrouveTypeSql = Trim("" & V)
    If Trim("" & TrouveTypeSql) = "" Then TrouveTypeSql = "Null": Exit Function
    If IsDate(TrouveTypeSql) = True And InStr(TrouveTypeSql, "/") <> 0 And InStr(TrouveTypeSql, ":") <> 0 Then TrouveTypeSql = "#" & Format(TrouveTypeSql, "yyyy-mm-dd hh:mm") & "#": Exit Function
    If IsDate(TrouveTypeSql) = True And InStr(TrouveTypeSql, "/") <> 0 Then TrouveTypeSql = "#" & Format(TrouveTypeSql, "yyyy-mm-dd") & "#": Exit Function
    If IsNumeric(Replace(TrouveTypeSql, ".", ",")) = True Then TrouveTypeSql = Replace(TrouveTypeSql, ",", "."): Exit Function
    TrouveTypeSql = "'" & Replace(TrouveTypeSql, "'", "''") & "'"
    End Function

  11. #11
    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
    _Regrets : même résultat "impossible de trouver la base"
    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".

    Cela conduit sur mon PC à ce que l'"application" soit un répertoire de C:\, qui contient et ma base active d'où partent les commandes et la base Bn avec laquelle je recherche une connection. Or l'application est dénommée "PortaiACO3_V70_04.mdb" dans Access et non "CGCPortail" comme le dit le debug du début.

    Je suis un peu perdu dans toit cela.

    N'oublie pas ma question : Le provider utilisé doit-il être effectivement présent ?
    Je pense qu oui. Merci de me le confirmer.
    Si oui, je dois trouver parmi les présents celui qui va bien ou le trouver ailleurs mais où et comment ?

    Je continue à tester !

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

  13. #13
    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.
    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!

  14. #14
    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
    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.

  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
    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.

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

  17. #17
    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
    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, 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