Bonjour
Dans une table j'ai un patient (avec un numéro unique), qui a une chirurgie composée de plusieurs actes. Pour simplifier, je fais une table avec une lettre code pour chaque acte.
J'ai fais une fonction pour concaténer sous la forme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 NIP Dateacte Code 123 01/02/2014 P 123 01/02/2014 v 123 10/02/2014 H 123 10/02/2014 P
La fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 NIP Dateacte Codeconcatene 123 01/02/2014 PV 123 10/02/2014 HP
La requête
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
38 Public Function concatenerLigne(strNIP As String, strDate As String) As String On Error Resume Next Dim db As DAO.Database Dim rst As DAO.Recordset Dim strResult As String Dim strRst As String Set db = CurrentDb() strResult = "" strRst = "Select Code From [DXC_CCAM_Code] Where [NIP]=""" & strNIP & """ AND [Dateacte]=#" & strDate & "#;" Set rst = db.OpenRecordset(strRst, dbOpenSnapshot) With rst If Not .BOF Then .MoveFirst Do Until .EOF If strResult = "" Then strResult = .Fields("Code") Else strResult = strResult & strSep & .Fields("Code") End If .MoveNext Loop End If End With rst.Close: Set rst = Nothing db.Close: Set db = Nothing concatenerLigne = strResult End Function
Cela fonctionne mais la requête est loooooonnnnggguuuueeee ! J'ai changé la snapshot en OpenDynaset mais pas plus rapide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT DXC_CCAM_Code.NIP, DXC_CCAM_Code.Dateacte, concatenerLigne([NIP],Format([Dateacte],"yyyy/mm/dd")) AS CodeResume FROM DXC_CCAM_Code GROUP BY DXC_CCAM_Code.NIP, DXC_CCAM_Code.Dateacte, concatenerLigne([NIP],Format([Dateacte],"yyyy/mm/dd"));
Auriez-vous une idée d'une autre requête ? stratégie ? J'ai beau réflechir, je ne vois pas .
Merci par avance pour vos suggestions.
Partager