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

IHM Discussion :

Lister les noms des documents des containers d'une base distante


Sujet :

IHM

  1. #1
    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 Lister les noms des documents des containers d'une base distante
    Je sais maintenant, grâce au forum, supprimer ou ajouter un objet, dont je connais le nom, dans une base distante.
    Je sais aussi, pour une base distante, obtenir la liste des noms des containers et le nombre de documents qu'ils contiennent.
    Mais lorsque je cherche à connaître le nom de ces documents, j'essuie un refus catégorique.

    N'y aurait-il pas de solution à ce problème ?

    Cordialement

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Pour une base distante je ne sais pas mais pour la base courante j'utilise les collections CurrentProject.All… .

    Par exemple pour les formulaires :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim oa as AccessObject
    for each oa in currentProject.AllForms()
       debug.print oa.name
    next oa
    Ça peut peut-être te donner une piste.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    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 n'ai aucun problème avec les containers et leurs noms, même dans une base distante en utilisant une extension du code que tu suggères (en particulier remplacement de "currentProject" par le chemin d'une BD distante..
    Mais si après le Debug.Print j'ajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      For Each doc In db.Containers(co).Documents
             Debug.Print doc.Name
    Next
    j'ai le message "impossible d'afficher les noms"

    Ma question reste donc ouverte : comment connaître les noms des documents d'un container d'une base distante ?

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Je n'ai aucun problème avec les containers et leurs noms
    Tu me vois en désaccord sur ce point, puisque tu n'accèdes pas aux noms quand tu en as besoin :-).
    C'est pour cela que je suggérai une autre collection qui utilise d'autres objets.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    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
    Il y a un malentendu.
    Effectivement je n'ai aucun problème avec les containers et leurs noms, mais j'en ai avec les documents contenus dans les containers et des noms de ces documents, base distante ou active.
    Ta suggestion fonctionne bien avec la base active, sauf pour les Accessobjects AllTables ou AllQueries, erreurs 438 'Propriété non gérèe'.

    J'ai essayé sans aucun succès en remplaçant 'CurrentProject' par le chemin d'une base distante.

    Ma question reste donc ouverte.

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Si ce sont juste les tables et les requêtes qui t'intéresse, peut-être peux-tu utiliser les collections DAO.TableDefs et DAO.QueryDefs.

    Ça serait bien selon moi si tu mettais le code que tu utilises actuellement.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    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 répondre à ta demande
    pour une base distante

    Supprimer un objet dont le nom doit être connu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim appAcc As Access.Application
    Set appAcc = GetObject("C:\Users\...\mabdddistante.accdb")
    appAcc.DoCmd.DeleteObject acTable, "nomtblasupprimer"
    appAcc.Application.Quit
    Ajouter un object dont le nom doit être connu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Docmd.TransfertDatabase acExport, etc
    Ne fonctionne pas pour la suppression par acImport, car l'objet source reste en place dans la base distante.

    Pour la base active
    Lister noms de containers ou Objects


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim container As DAO.container
    Dim document As DAO.document
    Set db = CurrentDb
    For Each container In db.Containers
      'Debug.Print "Container = {0}, Documents = {1}",
      Debug.Print container.Name & "  " & container.Documents.Count
      If container.Name = "Tables" Then
        For Each document In container
          Debug.Print "         " & document.Name
        Next
       End If
    Next
    Je ne parviens pas à trouver comment remplacer CurrentDb par une table distante, et donc comment ajouter ou supprimer un objet dont je ne connais pas le nom d'une base distante.

    A noter que j'aurais besoin des objets Forms, Tables, Queries, Modules et Macros.

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set db=OpenDatabase("X:\UnChemin\TaBDDistante.accdb")
    à la place de

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  9. #9
    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 fait ce que tu me conseillais, mais pour tous les containers "erreur 3251 : opération non autorisée pour ce type d'objet"

  10. #10
    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 continuer à chercher une solution et ai lu que la méthode Shell en vBA avec XCOPY permettait de copier un fichier d'un répertoire vers un autre.
    J'ai donc essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "NomFile = "C:\A\File1.mdb" 'ou tout autre fichier
    RepExt = "C:\AA"
    Shell "cmd  XCOPY " & NomFile & " >" & RepExt
    Aucun résultat.
    Où est mon erreur ?

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Il me semble que la syntaxe est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell "cmd  XCOPY " & NomFile & " " & RepExt
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  12. #12
    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
    Malheureusement, ça ne change rien au résultat : pas de copie, aucune info d'erreur.

  13. #13
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Fait un test en tapant toi-même la commande (avec les bons paramètres) dans une fenêtre DOS.
    Pas la peine de taper cmd quand on passe une commande à la main.

    Il est assez difficile de voir ce qui se passe quand on lance les commandes depuis le Shell.

    Après si tu vois que cela fonctionne met, dans l'appel au Shell :

    Ça va te permettre de voir la fenêtre DOS et surtout un éventuel message d'erreur.

    Une fois que tout est correct mets /c à la place de /k, ça va fermer le fenêtre après l'exécution.

    Attention les commandes DOS sont de type asynchrone. Access les lancent et passe à autre chose et ne s'inquiète pas de savoir si elles sont finies ou pas.

    Dans le cas d'une copie, je préfère utiliser un appel à l'API FileCopy (plus sur du nom) de windows ou à la commande VBA CopyFile.
    L'API permet la copie de fichier ouvert alors que le VBA ne peut copier que des fichiers qui ne sont pas utilisés par quelqu'un d'autre.
    Les 2 commandes sont attendues par Access qui ne passe à la suite que quand elles sont complétées.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  14. #14
    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 vos réponses.
    Je vais poser une question qui va probablement m'attirer des remarques et je vais perdre toute crédibilité de votre part mais tant pis : comment fait-on pour créer une fenêtre DOS ?

    Je connais certainement la réponse, mais malheureusement ma mémoire à maintenant des ratés et le web ne m'a pas répondu.
    Cordialement.

  15. #15
    Membre éprouvé Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 956
    Points : 1 139
    Points
    1 139
    Par défaut Lister les noms des documents des containers d'une base distante
    Bonjour,

    comment fait-on pour créer une fenêtre DOS ?
    Depuis le bureau windows: Touche Windows + r et cmd (Nom : Capture.PNG
Affichages : 180
Taille : 1,3 Ko + r)

    Depuis VBA, avec la fonction Shell comme décrit plus haut.

    ma mémoire à maintenant des ratés
    Ne t'inquiète pas pour ta crédibilité: on y passe tous un jour ou l'autre

    Bonne journée !
    Images attachées Images attachées  
    Essayer. Rater. Essayer encore. Rater encore. Rater mieux. (Samuel Beckett)
    Ou encore:
    Quand ça ne tourne pas rond dans le carré de l'hypothénuse , c'est signe qu'il est grand temps de prendre les virages en ligne droite.(Pierre Dac)
    ... Des principes qui m'ont beaucoup aidé en informatique...

  16. #16
    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 Ric500 de ce rappel !
    J'ai donc testé d’abord en DOSet ça fonctionne bien.
    Je passe alors à shell
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell "cmd XCOPY C:/A/ASS_AC03.mdb C\AA \-Y"
    et ça ne done rien avec ou sans /-Y ou cmd.
    0ù est mon erreur ?

  17. #17
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell "cmd /k XCOPY C:/A/ASS_AC03.mdb C\AA -Y"
    Pour voir ce qui se passe.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  18. #18
    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
    L'ajout de /k n'a rien changé au résultat : néant !
    C'est désespérant.

  19. #19
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut
    Et avec cette méthode ?
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  20. #20
    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
    Par quoi dois-je remplacer "FileSystemObject" dans mon cas ?

Discussions similaires

  1. Connaitre les noms des tables d'une base Sqlite
    Par fadsys dans le forum PureBasic
    Réponses: 5
    Dernier message: 14/03/2019, 18h34
  2. Réponses: 2
    Dernier message: 03/11/2008, 07h33
  3. Lister les noms des tables d'une base access
    Par chefinf dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 10/07/2008, 18h34
  4. Réponses: 1
    Dernier message: 02/07/2008, 16h30
  5. Afficher les nom des tables d'une base de donnée
    Par newmar dans le forum Administration
    Réponses: 4
    Dernier message: 02/04/2008, 16h40

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