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

Requêtes et SQL. Discussion :

concaténer plusieurs enregistrements sur une colonne


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 45
    Points : 33
    Points
    33
    Par défaut concaténer plusieurs enregistrements dans une colonne
    bonjour
    j' essaye de concaténer plusieurs enregistrements dans une colonne en suivant la méthode décrite par Tofalu version 05 03 2005.
    mon probleme est qu'à l'ouverture de la requete access me demande de selectionner la source de données.
    sans doute un probleme de référence DAO .
    pouvez vous m' eclairer sur le sujet
    merçi

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Avec le code on pourrait mieux t'aider, non ?

    Starec

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 45
    Points : 33
    Points
    33
    Par défaut concaténer plusieurs enregistrements sur une colonne
    création de la table Projet avec 2 colonnes projet et nom Participant

    DU MODULE SUIVANT
    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
     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
    ET ENFIN LA REQUETE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     SELECT DISTINCT Tbl_projet.Projet, Recupparticipant(Projet) AS LesParticipants
    FROM Tbl_projet;
    le probleme, à l'ouverture de la requete access me demande de sélectionner la source de données

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut concaténer plusieurs enregistrements sur une colonne
    Bonsoir,

    Dans ce projet = "CurrentDb" se trouve une table-->Tbl_Projet
    Et dans cette table un champ-->NomParticipant?

    Cordialement.

    Ps : Recupparticipant ou RecuParticipant
    Questions techniques par MP
    Le peu que je sais, c'est à mon ignorance que je le dois.
    ...............................................................................Sacha Guitry

  5. #5
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Citation Envoyé par pierre22 Voir le message
    le probleme, à l'ouverture de la requete access me demande de sélectionner la source de données

    Pour mieux cerner le problème, commence par essayer ta fonction, en mode pas à pas, avec une valeur d'exemple.

    Si tu as dans ta table tbl_Projet un projet dont le code est 1 par exemple, va dans le vbe (Alt + F11) et dans la fenêter d'exécution (Ctrl + G) et tapes:
    ............................................................................................

    Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 45
    Points : 33
    Points
    33
    Par défaut
    merci pour votre aide

    apres vérification mon module fonctinne tres bien en mode d 'execution pas à pas. Les regroupements sont parfaits
    Malgré tout à l 'ouverture de la requete access me demande toujour de préciser la source

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonsoir,

    Pièce jointe 19034

    Cordialement.
    Questions techniques par MP
    Le peu que je sais, c'est à mon ignorance que je le dois.
    ...............................................................................Sacha Guitry

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    une alternative générique (il faut activer la référence DAO) :
    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
    30
    31
    32
    33
    34
    35
    36
    37
     
    Public Function ConcatColonne(vValeurPivot As Variant, _
                                  sNomColonnePivot As String, _
                                  sNomColonneConcat As String, _
                                  sNomDomaine As String, _
                                  sSeparateur As String) As String
       On Error GoTo errtag
       Dim oDb As DAO.Database
       Dim oRs As DAO.Recordset
       Dim sSQL As String
       If IsNull(vValeurPivot) Then Exit Function
       sSQL = "SELECT " & sNomColonneConcat & " & '" & sSeparateur & "' As C FROM " & _
              sNomDomaine & " WHERE " & sNomColonnePivot & "="
       Select Case VarType(vValeurPivot)
       Case vbString
          sSQL = sSQL & """" & vValeurPivot & """"
       Case vbDate
          sSQL = sSQL & CDbl(vValeurPivot)
       Case Else
          sSQL = sSQL & CStr(vValeurPivot)
       End Select
       sSQL = sSQL & " ORDER BY " & sNomColonneConcat
       Set oDb = CurrentDb
       Set oRs = oDb.OpenRecordset(sSQL, dbOpenForwardOnly)
       While Not oRs.EOF
          ConcatColonne = ConcatColonne & oRs(0)
          oRs.MoveNext
       Wend
       ConcatColonne = Left$(ConcatColonne, Len(ConcatColonne) - Len(sSeparateur))
    fin:
       Set oDb = Nothing
       Set oRs = Nothing
       Exit Function
    errtag:
       ConcatColonne = "Erreur !"
       Resume fin
    End Function
    utilisation dans votre cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Debug.print ConcatColonne(Projet,"Projet","NomParticipant","Tbl_Projet",", ")
    cordialement,

    Philippe

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 45
    Points : 33
    Points
    33
    Par défaut
    merci de votre aide
    la solution fonctionne sur un champ de regroupement texte,
    Mon champs de regroupement est un champs numérique et le module bug?
    si vous pouviez m' aider
    merci

    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
    30
    31
    32
    33
    34
    Function ConcatForQuery(strRegroup As String, fldRegroup As String, _
        strConcat As String, strTable As String, _
        Optional strSep As String = "/") As String
     
    '** Regroupement de donnée sur le champ fldRegroup
    '** et concaténation sur le champ strConcat
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim strResult As String
    Dim strRst As String
     
    Set db = CurrentDb()
    strRst = "Select * From [" & strTable & "] " _
        & "Where [" & strRegroup & "] = """ & fldRegroup & """;"
     
    Set rst = db.OpenRecordset(strRst, dbOpenDynaset)
    With rst
        If Not .BOF Then
            .MoveFirst
            Do Until .EOF
                If strResult = "" Then
                    strResult = .Fields(strConcat)
                Else
                    strResult = strResult & strSep & .Fields(strConcat)
                End If
            .MoveNext
            Loop
        End If
    End With
    rst.Close: Set rst = Nothing
    db.Close: Set db = Nothing
    ConcatForQuery = strResult
     
    End Function

  10. #10
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    modifier la ligne correspondante ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    strRst = "Select * From [" & strTable & "] " _
        & "Where [" & strRegroup & "] = " & fldRegroup & ";"
    Philippe

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 45
    Points : 33
    Points
    33
    Par défaut
    tres bien tout fonctionne à merveille
    Félicitation pour la qualité du site
    merci

  12. #12
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonjour,

    Je ne sais pas ce que j'ai mis en pièce jointe hier, mais ....Vraiment n'importe quoi.
    J'en ai profité pour adjoindre l'envoi de Philben. C'est excellent. Comme tout son travail. Allez jeter un coup d'oeil sur son envoi de géolocalisation :http://www.developpez.net/forums/sho...d.php?t=296300
    Pour ma part je m'en suis servi avec les communes Françaises(Site de Raymond). Accouplé au Tuto d'Arkham sur les images, lorsqu'on sélectionne une commune : en dehors du classique département, région, etc. -->
    Distance à vol d'oiseau par rapport à une commune de référence, Altitude + Cap par rapport à cette commune de référence et pour le plaisir une flêche qui indique ce cap. Merci Philben
    (Pour la distance parcourue par les bipèdes + 18% environ)

    Cerise sur le gateau http://ardecheearth.free.fr/telechar...unes_earth.zip Chaque commune de plus de 4.000 habitants possède son site officiel (2270 villes) et 13.385 sites officiels plus 501 sites alternatifs (sites personnels non officiels) sont répertoriés pour l'ensemble des communes (38% des communes). Toutes les communes possèdent leurs coordonnées géographiques.

    Cordialement.

    Ps : J'oubliais...(Je suis vraiment distrait :Pièce jointe 19040
    Toujours la tête ailleurs : ConcatForQuery que j'ai également adjoint est de Jessy Sempere
    Questions techniques par MP
    Le peu que je sais, c'est à mon ignorance que je le dois.
    ...............................................................................Sacha Guitry

  13. #13
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    Très heureux que ça puisse te rendre service. Grand merci à toi Francishop !

    Philippe

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Probleme pour Concaténer plusieurs enregistrements dans une seule colonne
    Par severik dans le forum Requêtes et SQL.
    Réponses: 23
    Dernier message: 08/11/2017, 15h15
  2. Réponses: 2
    Dernier message: 11/04/2014, 18h16
  3. [AC-2003] Concaténer plusieurs enregistrements dans une seule colonne
    Par pgomis dans le forum Access
    Réponses: 2
    Dernier message: 29/07/2013, 10h39
  4. Réponses: 4
    Dernier message: 29/10/2010, 17h05
  5. Réponses: 3
    Dernier message: 20/05/2007, 23h41

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