Bonjour,
j'ai une table se nommant EV_CLIENTS contenant de nombreux évenements liés à un ID client (1 ID par client).
Je souhaite concatener ces evenements pour que chaque ID n'est en face qu'un seul champ mémo.
Pour celà je suis d'abord passé par une requête de selection :
Ensuite, après quelques recherches, j'ai trouvé le code me permettant de concatener les différents champs mémo nommés "Evenements" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT EV_CLIENTS.IDClientEv, EV_CLIENTS.TypeEv, EV_CLIENTS.DateEv, [TypeEv] & " - " & [DateEv] & Chr(10) & plaintext([CommentairesEV]) & Chr(10) & Chr(10) AS Evenements, EV_CLIENTS.ClotureEv FROM EV_CLIENTS WHERE (((EV_CLIENTS.ClotureEv)=False)) ORDER BY EV_CLIENTS.TypeEv, EV_CLIENTS.DateEv;
Enfin j'ai crée une requête ajout, basée sur cette fonction, déversant dans la table finale avant export les évènements concaténés :
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 FusionEv(IDClientEv As String) As String Dim res As DAO.Recordset Dim SQL As String 'Selectionne les participant du projet SQL = "SELECT Evenements FROM Select_Ev WHERE Select_Ev.IDClientEv=" & IDClientEv Set res = CurrentDb.OpenRecordset(SQL) 'Concatene les différents enregistrement While Not res.EOF FusionEv = FusionEv & res.Fields(0).Value & " " res.MoveNext Wend 'Enleve le dernier espace FusionEv = Left(FusionEv, Len(FusionEv) - 1) 'libere la mémoire Set res = Nothing End Function
Malheureusement seuls les 255 premiers caractères passent alors que les tables d'origine et de destination ont bien des champs "mémo".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 INSERT INTO Ev_Fusion ( IDClientEv, FusionEvenements ) IN 'C:\Program Files\GestADV\GestADV-Client\temp\GestADV-temp.accdb' SELECT DISTINCT Select_Ev.IDClientEv, FusionEv(IDClientEv) AS FusionEvenements FROM Select_Ev;
Comment contourner ce PB svp, je devient fou
Partager