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