Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Crystal Reports
Crystal Reports Forum d'entraide sur Crystal Reports. Avant de poster --> FAQ Crystal, Tutoriels Crystal
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/02/2011, 10h42   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 79
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 79
Points : 14
Points : 14
Par défaut affichage XML indenté

Bonjour à tous,

Dans un rapport crystal, je souhaite afficher un champ "mémo" d'une base de donnée contenant du XML.

J'aurais voulu savoir si vous aviez une solution pour afficher le text XML de façon propre et indentée?

La seule chose que j'ai trouvé c'est :
Code :
1
2
 
REPLACE(montext,"><",">"+chr(10)+chr(13)+"<")
C'est déjà plus propre mais ce n'est pas indenté.

Merci d'avance.
czezko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 14h47   #2
Membre Expert
 
Avatar de luc_chivas
 
Inscription : avril 2004
Messages : 894
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 894
Points : 1 049
Points : 1 049
bonjour

As tu essayé dans les propriétés de ton champs de le mettre en format RTF ou HTML ??
je n'ai pas CR sous les yeux...
__________________
Luc
luc_chivas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 16h45   #3
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 79
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 79
Points : 14
Points : 14
oui j'ai essayé mais ça ne fonctionne pas. Par contre j'ai trouvé un petit moyen de le "parser". Le code si dessous n'affiche que le nom des attribut et leur valeur s'il y a une valeur.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
 
stringvar xml := REPLACE({MACHAINE},"><",">"+chr(10)+"<");
stringvar array x := split(xml,chr(10),-1,1);
numbervar nbr := ubound(x);
stringvar value :="";
stringvar param:="";
stringvar fulltext="";
numbervar cpt :=0;
 
FOR cpt:=1 TO nbr do
(
value:= extractstring(x[cpt],">","<");
IF value <> ""
then
(
param:= extractstring(x[cpt],"<",">");
fulltext:= fulltext + param + " : " + value + chr(10);
)
);
 
fulltext;


Maintenant j'ai une autre question.....J'ai fais un champ de formule dans lequel j'ai mis ce code ci. J'ai fais un glissé déposé vers la zone détail de mon rapport. Tout fonctionne sauf que le text est en append pour chaque record.
Savez-vous comment éviter cela ? Merci
czezko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 16h57   #4
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 79
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 79
Points : 14
Points : 14
j'ai ajouté local à toutes mes variables ça semble fonctionner
czezko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 16h16   #5
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 79
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 79
Points : 14
Points : 14
Après un peu de torture cérébrale ,voilà le code final qui indente correctement un texte XML.
Code :
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 
LOCAL stringvar xml := REPLACE({MACHAINE},"><",">"+chr(10)+"<");
LOCAL stringvar array x := split(xml,chr(10),-1,1);
LOCAL numbervar nbr := ubound(x);
LOCAL stringvar fulltext="";
LOCAL stringvar text:="";
LOCAL numbervar cpt :=0;
LOCAL numbervar i:=-1;
LOCAL numbervar j:=0;
 
FOR cpt:=1 TO nbr do
(
 
text:=x[cpt];
 
IF text LIKE "<*>*</*>"
then
(
IF x[cpt-1] LIKE "<*>*</*>" OR x[cpt-1] LIKE "</*>"
then
(
i:=i;
)
else
(
i:=i+1
)
)
else
(
IF text LIKE "</*>"
then
(
i:=i-1;
)
else
(
IF cpt>1 AND x[cpt-1] LIKE "</*>"
then
(
i:=i;
)
else
(
IF cpt>1 AND x[cpt-1] LIKE "<*>*</*>"
then
( 
i:=i;
)
else
(
i:=i+1;
)
)
)
);
FOR j:=1 TO i do
(
text:= chr(9) + text;
);
fulltext:= fulltext + text + chr(13) + chr(10);
);
fulltext;
czezko est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h32.


 
 
 
 
Partenaires

Hébergement Web