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. #41
    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
    _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 !

  2. #42
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 420
    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 420
    Points : 2 179
    Points
    2 179
    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 !

  3. #43
    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
    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 ?

  4. #44
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 420
    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 420
    Points : 2 179
    Points
    2 179
    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.

  5. #45
    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
    Merci du lien pour MDAC Trèe intéressant.
    Confirme-moi mon avis sur ma 1ère question.
    A+

  6. #46
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 420
    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 420
    Points : 2 179
    Points
    2 179
    Par défaut
    Si ta base active ce trouve en C:\CGCPortail\PortailACO3_V70_04.mdb

    Application.CurrentProject.Path te donne le chemin du répertoire de l'application => C:\CGCPortail

    Si MED_ACO3.mdb ce trouve dans le même répertoire que l'application il suffit de contacter le répertoire de l'application avec MED_ACO3.mdb
    => Application.CurrentProject.Path & "\MED_ACO3.mdb".

    Je ne comprends pas ce qui pose problème !

  7. #47
    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
    Le problème est que dans le dernier code que tu m'as proposé et dont voici le début
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    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) & "," _
    le chemin de l"application est celui donné par le système, soit le répertoire, donc pas trace de la base active.
    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".
    Je ne sais plus quoi faire pour introduire le nom de la base active qui ets le plus important.

  8. #48
    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
    Mes recherches n'aboutissant pas malgré beaucoup d'essais, je me vois contraint, pour la première fois depuis que j'utilise ce forum, d'abandonner.

    Je te remercie de ton aide, mais suis très étonné que tu aies été le seul des habitués du forum à m'avoir accompagné dans ce domaine des "connectingString" qui me pariait prometteur, en ce qui concerne mon problème tout au moins.

    Cordialement.

    Question non réglée

  9. #49
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    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 006
    Points : 24 598
    Points
    24 598
    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

  10. #50
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 420
    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 420
    Points : 2 179
    Points
    2 179
    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/

  11. #51
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    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 006
    Points : 24 598
    Points
    24 598
    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

  12. #52
    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
    loufab
    J'ai répondu hier, mais j'ai du faire une fausse manouvrière.
    Je reprends:
    Pour répondre à tes questions.
    Pourquoi tu veux utiliser le nom de la base active dans ce code ?
    pourquoi tu en as besoin dans ce code ? Et pourquoi tu penses que c'est le plus important ?
    parce que une relation implique deux bases et on ne désigne nommément dans le code de Thumb down que la 'base' celle qui est reliée..
    il serait donc sous-entendu que la base de départ (la base active) est celle su système.Ne serait-ce pas le contraire qui est exact ?

    J'aurais donc tout faux ?
    Cordialement

  13. #53
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 420
    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 420
    Points : 2 179
    Points
    2 179
    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 !

  14. #54
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    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 006
    Points : 24 598
    Points
    24 598
    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

  15. #55
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 420
    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 420
    Points : 2 179
    Points
    2 179
    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!

  16. #56
    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
    loufab & Thumb down
    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.
    Ce qui permet de faire des requêtes SQL sur une base externes sens la rattacher et sans ado!
    Voila des réponses précises.
    Maintenant, pour continuer, si je comprends bien vos conseils
    A tous prendre,il serait plus logique d’ouvrir les base de données une à une,. De décocher les références manquantes puis de réactiver les références Ado!
    Les références ont été désactivées dans outils/références pour les 12 bases.
    Comment les réactiver en DAO ?
    Vu qu'avec creatobject plus besoin des références,en revanche il faut installer le MDAC
    Comment installer MDAC ?

    Voila mes 2 questions.
    Je dois reconnaître que je me suis empêtré et ai du mal à m'y retrouver.
    Merci de votre aide

  17. #57
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    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 006
    Points : 24 598
    Points
    24 598
    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

  18. #58
    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
    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+

  19. #59
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 420
    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 420
    Points : 2 179
    Points
    2 179
    Par défaut
    Citation Envoyé par loufab Voir le message
    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.

    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!
    voila ce que je voulais dire!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sql= "select * from MyTable in('c:\Base.MDB')"

  20. #60
    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,
    Mon essai échoue avec "ne peut trouver le table 'purchasearchive'" probablement parce que je ne dois pas avoir le bon 'provider'.
    Le debug.print donne
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    insquery = INSERT INTO purchasearchive VALUES (Null,Null,Null,Null,#2020-09-26#,Null);

    Comment trouver, puis installer, celui qui va bien ?

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