Concaténer dans un champ [Access] - SQL/NoSQL - Programmation
Marsh Posté le 13-07-2012 à 14:53:34
Bonjour,
peut-être en passant par une requête récursive si access le permet ??
MSQuery les accepte donc je pense qu'access aussi.
Voir un super tuto ici
Marsh Posté le 13-07-2012 à 20:31:19
J'ai finalement résolu mon problème en créant une fonction en vba.
Je poste le code lundi si je n'oublie pas, ça pourrait en aider...
Marsh Posté le 17-07-2012 à 11:20:53
Donc mes recherches ont abouties à : ça existe en mysql, en oracle 11+ mais pas en access. Il faut donc passer par du code VBA, mais ce que j'ai trouvé est très lourd et la requête qui doit calculer 90.000 champs à concaténer prend plus de 30mn à s'exécuter, alors qu'elle n'en prend que quelques secondes si on affiche avec les doublons (plusieurs lignes au lieu de regrouper)
J'ai trouvé ça sur un autre site :
http://access.developpez.com/sources/?page=Requete
que j'ai adapté à ma sauce :
Public Function concatListe(champ As String, table As String, nomPK As String, primaryKey As Integer) As String
Dim res As DAO.Recordset
Dim SQL As String
'Selectionne les participant du projet
SQL = "SELECT " & champ & " FROM " & table & " WHERE " & nomPK & "=" & primaryKey
Set res = CurrentDb.OpenRecordset(SQL)
'Concatene les différents enregistrement
While Not res.EOF
concatListe = concatListe & res.Fields(0).Value & " / "
res.MoveNext
Wend
'Enleve les derniers caractères
If Len(concatListe) > 2 Then
concatListe = Left(concatListe, Len(concatListe) - 3)
End If
'libere la mémoire
Set res = Nothing
End Function
Si ça peut aider d'autres personnes...
Et si vous voyez une façon plus simple ou plus efficace de faire ça sous Access, merci de me le dire
Marsh Posté le 31-05-2012 à 15:44:59
Bonjour,
Que ce soir sur google ou sur le forum je n'arrive pas à trouver mon bonheur. Je suis tombé sur ça mais je ne sais pas si je peux l'adapter à ma situation.
Voici ce que j'ai :
Champ1 Champ2 Champ3 Champ4
1 2 3 a
1 2 3 b
1 2 3 c
1 2 3 d
4 5 6 z
4 5 6 x
et je voudrais
Champ1 Champ2 Champ3 Champ4
1 2 3 a,b,c,d
4 5 6 z,x
Est-ce possible de faire ça en choisissant le délimiteur?
Merci