Bonjour à tous,
Je dois transformer une requête SQL en XML suivant le modèle ci-après :
Pour ce faire, j'ai tenté avec SQL Server de reproduire ce format de sortie avec la requête suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <Entete Agence="0010001" Identite="0000010" DateRelation="10062010"> <Particulier> <Information Nom="DOE" Prenom="John" Genre="M" DatNaissance="11061985" /> <PieceIdentite TypPiece="01" NumPiece="XXXXXXXXX" DatPiece="17032020" /> <Adresse Description="15 Rue XXXX" Commune="C1012" CodPostal="888" /> <Compte Status="00" Numero="XXXXXXXXXXX" CleRib="00" Type="01"></Compte> <Compte Status="00" Numero="YYYYYYYYYYY" CleRib="34" Type="02"></Compte> </Particulier> </Entete>
Sauf que il me sort 2 lignes XML au lieu d'une avec les 2 lignes de comptes
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 SELECT BRC.Code AS "@Agence" ,CUS.Code AS "@Identite" ,FORMAT(CUS.ContactDate, 'ddMMyyyy') AS "@DateRelation" ,CUS.LastName AS [Particulier/Information/@Nom] ,COALESCE (CUS.FirstName, 'N/A') AS [Particulier/Information/@Prenom] ,CUS.Gender AS [Particulier/Information/@Genre] ,FORMAT(CUS.BirthDate, 'ddMMyyyy') AS [Particulier/Information/@DateNaissance] ,CASE WHEN CUS.DocType = 1 THEN '01' WHEN CUS.DocType = 2 THEN '03' END AS [Particulier/PieceIdentite/@Type] ,CUS.DocNumber AS [Particulier/PieceIdentite/@Numero] ,FORMAT(CUS.DocDate, 'ddMMyyyy') AS [Particulier/PieceIdentite/@Date] ,CUS.Address AS [Particulier/Adresse/@Description] ,TOW.Code AS [Particulier/Adresse/@Commune] ,TOW.PostalCode AS [Particulier/Adresse/@CodePostal] ,ACC.Status AS [Particulier/Compte/@Status] ,ACC.Number AS [Particulier/Compte/@Numero] ,ACC.Rib AS [Particulier/Compte/@CleRib] ,ACC.Type AS [Particulier/Compte/@Type] FROM MyCBS.dbo.Customer CUS INNER JOIN MyCBS.dbo.Branch BRC ON BRC.BranchID = CUS.BranchID INNER JOIN MyCBS.dbo.Account ACC ON ACC.CustomerID = CUS.CustomerID INNER JOIN MyCBS.dbo.Town TOW ON TOW.PlaceID = CUS.DocPlaceID WHERE CUS.CustomerID = 545875 --- Customer has 2 accounts ORDER BY CUS.Code FOR XML PATH ('Entete');
J'ai tenté beaucoup de bidouille etc mais j'arrive pas.
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 <Entete Agence="0010001" Identite="0000010" DateRelation="10062010"> <Particulier> <Information Nom="DOE" Prenom="John" Genre="M" DatNaissance="11061985" /> <PieceIdentite TypPiece="01" NumPiece="XXXXXXXXX" DatPiece="17032020" /> <Adresse Description="15 Rue XXXX" Commune="C1012" CodPostal="888" /> <Compte Status="00" Numero="XXXXXXXXXXX" CleRib="00" Type="01"></Compte> </Particulier> </Entete> <Entete Agence="0010001" Identite="0000010" DateRelation="10062010"> <Particulier> <Information Nom="DOE" Prenom="John" Genre="M" DatNaissance="11061985" /> <PieceIdentite TypPiece="01" NumPiece="XXXXXXXXX" DatPiece="17032020" /> <Adresse Description="15 Rue XXXX" Commune="C1012" CodPostal="888" /> <Compte Status="00" Numero="YYYYYYYYYYY" CleRib="34" Type="02"></Compte> </Particulier> </Entete>
Donc je pense me faire un outil avec Delphi qui va me permettre de faire le truc ligne par ligne.
Avant de le faire, avez vous des recommandations à me donner.
Merci
Andry
Partager