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

Access Discussion :

concatener plusieurs enregistrements d'un champ


Sujet :

Access

  1. #1
    Membre du Club
    Homme Profil pro
    fonctionnaire
    Inscrit en
    Janvier 2015
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : fonctionnaire

    Informations forums :
    Inscription : Janvier 2015
    Messages : 72
    Points : 43
    Points
    43
    Par défaut concatener plusieurs enregistrements d'un champ
    Bonjour et merci d'avance de me lire,

    Est-il possible de concatener plusieurs champs appartenant à plusieurs enregistrements d'une table vers 1 seul champ d'1 seul enregistrement d'une autre table.

    Dans ma base de donnée, en simplifié, j'ai 3 tables (T1_Dossier, T2_Article, T3_Document)
    T1: elle génère un numéro de dossier automatique et qui sert de relation pour les 2 autres tables (grâce à des requêtes ajouts et MàJ)
    T2: liste des articles par dossier contenant une description
    T3: Rassemble les infos utiles à l'élaboration des documents

    1 ou plusieurs descriptions d'articles de la T2 doivent être mentionnées dans 1 seul champ de la T3 (dans un soucis de respecter une certaine mise en page pour les états).

    Je n'arrive pas "encore" à trouver la requête (ou le module) me permettant de faire cela. (malgré recherche sur ce forum encyclopédique, il faut dire que je formule peut etre mal ma question).

    Exemple

    T1 : IDt1 1,
    T2 : IDt2 1, Idt1 1, description a
    IDt2 2, Idt1 1, description b
    IDt2 3, Idt1 1, description c
    T3 : IDt3 1, Idt1 1, Concatenation a et c
    -------
    Merci à tous,

    ps: je chercherai moi même pour ce qui suit mais l'idée est qu'un formulaire permet de sélectionner les articles à concatener à l'aide d'une case à cocher.
    De plus, en sus de la description il y a également un 2ème champ à concatener car plusieurs origines sont possibles pour le même article.

  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.

    Autant que je sache, il n'est pas possible de le faire en SQL si ton nombre est variable.

    La seule méthode que je connaisse c'est de faire une fonction VBA. Un truc du genre :

    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
    public function Concatener(prmCritere as string) as string
      dim result as string
      dim db as dao.database:set db=currentb
      dim r as dao.database:set r=db.openrecordset("nomTaSource", dbOpenDynsaset)
      call r.findfirst(prmCritere)
     
      do while not r.nomatch()
     
         if result<>"" then
          result=result & ", " 'Sépare les données par une virgule
        end if
     
         result=result & r![TonChamp]
         r.findnext(prmCritere)
      loop
      r.close:set r=nothing
      db.close:set db=nothing
      Concatener=result
    end function
    Après tu n'as plus qu'à l'appeler comme une fonction intégrée dans un champ calculé d'une requête.

    Note que cela peut sérieusement ralentir l'exécution.

    Si tu as un problème de performance, il faudra sans doute prévoir de calculer ce résultat au fur et à mesure des variations de données pour ne plus avoir qu'à l'afficher au moment où tu en a besoin.

    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 du Club
    Homme Profil pro
    fonctionnaire
    Inscrit en
    Janvier 2015
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : fonctionnaire

    Informations forums :
    Inscription : Janvier 2015
    Messages : 72
    Points : 43
    Points
    43
    Par défaut
    Merci Marot,

    J'essayerai dès demain car j'ai fini dans 7minutes.
    Puis je placer le code sur la case à cocher du choix de l'article? (par exemple sur modification/changement) Ou dois je créer un module vba spécifique (pour ça je ne suis pas doué).

    Un tout grand merci pour l’extrême rapidité de ta réponse.

  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
    Puis je placer le code sur la case à cocher du choix de l'article? (par exemple sur modification/changement) Ou dois je créer un module vba spécifique.
    En fait cela dépend de l'usage que tu veux en faire. Si c'est seulement sur ce formulaire, je recommande de la mettre dans le formulaire.

    Si tu en as besoin à plusieurs place il faudra le mettre dans un module, soit juste pour elle soit dans un module existant si c'est "logique" que cette fonction s'y retrouve.

    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.

Discussions similaires

  1. [AC-2007] [Débutant] Extraire plusieurs enregistrements d'un champ
    Par JiB@ dans le forum VBA Access
    Réponses: 5
    Dernier message: 05/11/2009, 17h32
  2. [AC-2007] Concatener deux enregistrement d'un champ
    Par Hiken dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 24/09/2009, 13h39
  3. requete concatenant plusieurs enregistrements
    Par calitom dans le forum Requêtes
    Réponses: 1
    Dernier message: 12/05/2009, 17h00
  4. Création de plusieurs enregistrements à partir d’un champ mémo
    Par nayhau dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/08/2008, 12h44
  5. Réponses: 3
    Dernier message: 25/10/2006, 10h55

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