Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Membre du Club
    Inscrit en
    septembre 2004
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : septembre 2004
    Messages : 208
    Points : 46
    Points
    46

    Par défaut Concaténer enregistrements dans plusieurs colonnes

    Bonjour,

    J'ai utilisé l'excellent tuto : http://access.developpez.com/sources/?page=Requete
    pour concaténer plusieurs enregistrements sur une colonne

    Est il possible d'adapter le module repris :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Public Function RecupParticipant(Projet As Long) As String
    Dim res As DAO.Recordset
    Dim SQL As String
    'Selectionne les participant du projet
    SQL = "SELECT NomParticipant FROM Tbl_Projet WHERE Projet=" & Projet
    Set res = CurrentDb.OpenRecordset(SQL)
    'Concatene les différents enregistrement
    While Not res.EOF
    RecupParticipant = RecupParticipant & res.Fields(0).Value & " "
    res.MoveNext
    Wend
    'Enleve le dernier espace
    RecupParticipant = Left(RecupParticipant, Len(RecupParticipant) - 1)
    'libere la mémoire
    Set res = Nothing
    End Function
    Pour l'appliquer à plus d'un champs?
    Par exemple à partir d'une table avec les champs suivants

    id | champs1 | champs2

    obtenir : id | champs1 concaténé | champs2 concaténé

    Merci à toutes et tous

  2. #2
    Modérateur

    Homme Profil pro René MAROT
    Inscrit en
    octobre 2005
    Messages
    7 366
    Détails du profil
    Informations personnelles :
    Nom : Homme René MAROT
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 7 366
    Points : 11 103
    Points
    11 103

    Par défaut

    Pour obtenir
    id | champs1 concaténé | champs2 concaténé
    Il ne faut pas travailler sur plusieurs champs en même temps mais plusieurs fois sur un champ à la fois.

    Donc voici une version modifiée du code qui te permet de faire cela.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Public Function RecupParticipant(prmNomChamp as string, Projet As Long) As String
     
    dim db as dao.database:set db=currentdb
     
    Dim res As DAO.Recordset
    Dim SQL As String
    'Selectionne les participant du projet
    SQL = "SELECT " & prmnomChamp & " FROM Tbl_Projet WHERE Projet=" & Projet
    Set res = CurrentDb.OpenRecordset(SQL)
    'Concatene les différents enregistrement
    While Not res.EOF
    RecupParticipant = RecupParticipant & res.Fields(0).Value & " "
    res.MoveNext
    Wend
    'Enleve le dernier espace
    RecupParticipant = Left(RecupParticipant, Len(RecupParticipant) - 1)
    'libere la mémoire
    Set res = Nothing
    End Function
    Il faudrait aussi changer le nom de la procédure.

    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.

  3. #3
    Membre du Club
    Inscrit en
    septembre 2004
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : septembre 2004
    Messages : 208
    Points : 46
    Points
    46

    Par défaut

    Merci beaucoup pour l'aide mais à vrai dire je ne comprends pas tout
    J'ai une table maTable comprenant les champs : id, shipping,vendor, subvendor
    avec shipping type Entier
    vendor type String
    subvendor type String

    que je voudrais concaténer dans 3 champs distincts : ( concat_shipping,concat_vendor et concat_subvendor ) pour chaque id

    Si je reprends ton code :

    Code :
    1
    2
    3
    4
    Public Function concat(shipping_id As Integer, vendor As String,subvendor as String) As String
    Dim db As DAO.Database: Set db = CurrentDb
    Dim res As DAO.Recordset
    Dim SQL As String
    Et là je coince ... Pourquoi id n'est il pas repris ?

    Merci pour ton aide

  4. #4
    Modérateur

    Homme Profil pro René MAROT
    Inscrit en
    octobre 2005
    Messages
    7 366
    Détails du profil
    Informations personnelles :
    Nom : Homme René MAROT
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 7 366
    Points : 11 103
    Points
    11 103

    Par défaut

    Ce que tu veux

    à partir de

    • ID1, VendorA, SubContractorA
    • ID1, VendorB, SubContractorB
    • ID1, VendorC, SubContractorC


    c'est :

    a) ID1, VendorA, SubContractorA, VendorB, SubContractorB, VendorC, SubContractorC

    ou

    b) ID1, VendorA, VendorB, VendorC, SubContractorA, SubContractorB, SubContractorC

    ?

    Et tout cela dans une seule chaine de caractères ?

    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.

  5. #5
    Rédacteur
    Avatar de Tofalu
    Homme Profil pro Christophe Warin
    Technicien maintenance
    Inscrit en
    octobre 2004
    Messages
    9 502
    Détails du profil
    Informations personnelles :
    Nom : Homme Christophe Warin
    Âge : 31
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : octobre 2004
    Messages : 9 502
    Points : 31 862
    Points
    31 862

    Par défaut

    Bonjour

    Il suffit de concatener les deux appels fonctions. En reprenant la fonction donnée par marot, on aura :

    Code :
    1
    2
    SELECT DISTINCT Tbl_projet.Projet, Recupparticipant(champ1,Projet) & " " & Recupparticipant(champ2,Projet) AS LesParticipants
    FROM Tbl_projet;
    Et on aura bien : id | champs1 concaténé | champs2 concaténé
    Ce message vous a été utile ? Si oui, cliquez sur

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •