Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Crystal Reports > Débuter
Débuter Forum d'entraide pour débuter avec Crystal Reports
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 17/02/2011, 11h17   #1
Nouveau Membre du Club
 
Inscription : juin 2009
Messages : 90
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 90
Points : 32
Points : 32
Par défaut Lister les valeurs des paramètres

Bonjour à tous,

Comme je débute avec Crystal Reports je viens vous demander un peu d'aide !

J'ai fais quelques recherche sur le forum et ben67 (il me semble) avait trouvé un code sur internet permettant de lister les paramètres :
Code :
1
2
3
4
5
6
7
8
9
10
11
WhilePrintingRecords;
LOCAL NumberVar Array InputNom := {?Nom de fournisseur};
 
LOCAL StringVar str := "Code Fournisseur : ";
LOCAL NumberVar strLen := Count(InputNom);
LOCAL NumberVar i;
    FOR i := 1 TO strLen
    Step + 1 
    Do (str := str  & InputNom [i] & ', ');
 
str
Ce code je l'ai rafistolé à ma sauce. Entre temps je suis passé sur la syntaxe Basic car je ne connaissais pas l'équivalent de certaines structures de code et fonctions sous Crystal.

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
 
WhilePrintingRecords;
LOCAL NumberVar Array InputNom := {?Nom de fournisseur};
LOCAL NumberVar Array InputCmd := {?N° Commande};
 
LOCAL StringVar str := "Code Fournisseur : ";
LOCAL NumberVar strLen := Count(InputNom);
LOCAL NumberVar cpt;
IF true then
    IF strlen =< 0 then 
        str := str  &  "Aucun paramètre" ;
    else 
        FOR cpt := 1 TO strLen
        Step + 1 
        Do  (str := str  & InputNom [cpt] & ", ");
    end IF
 
    str := str  &  chr(10) & chr(13) & "N° de commande : ";
    strLen := Count(InputCmd);
    cpt := 0;
 
    IF strlen =< 0 then 
        str := str  &  "Aucun paramètre" ;
    else 
        FOR cpt := 1 TO strLen
        Step + 1 
        Do  (str := str  & InputCmd [cpt] & ", ");
    end IF
end IF
Dès que j'essaie de sauvegarder, il me met l'erreur standard suivante :
Citation:
Le texte restant ne semble pas faire partie de la formule.
Là je bute parce que je ne comprend pas où il pense que la formule devrait s'arrêter.

Merci d'avance !
Cryos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 11h47   #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,

il te manque une terminaison de ligne quelque part (
en principe, CR te sélectionne le texte qui n'interprète pas.. donc la terminaison manquante, est juste avant.


complèment..

"IF true then"

c'est quoi la variable true déclarée nulle part ??
__________________
Luc
luc_chivas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 13h23   #3
Nouveau Membre du Club
 
Inscription : juin 2009
Messages : 90
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 90
Points : 32
Points : 32
Merci pour l'astuce.

Le true c'est la constante booléenne jpensais que ça aurait pu résoudre le problème d'encadrer le tout dans un IF.

Là en l'occurence il sélectionne tout à partir du point-virgule de "WhilePrintingRecords;" Or cette commande je l'utilise ailleurs et ça marche.

C'est parce que je suis sur la syntaxe Basic ?
Cryos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 18h24   #4
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
Ben en fait,

la syntaxe que tu utilises est une syntaxe Crystal et pas Basic

je viens de corriger la syntaxe de ta formule, mais par contre, je ne l'ai pas testé..

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
 
WhilePrintingRecords;
LOCAL NumberVar Array InputNom := {?My Parameter};
LOCAL NumberVar Array InputCmd := {?My Parameter 2};
 
LOCAL StringVar str := "Code Fournisseur : ";
LOCAL NumberVar strLen := Count(InputNom);
LOCAL NumberVar cpt;
IF true then
(
    (IF strlen <= 0 then 
        str := str  &  "Aucun paramètre" 
    else 
        (
        FOR cpt := 1 TO strLen Do
        str := str  & InputNom [cpt] & ", ";
        Str
        )
      ); 
    str := str  &  chr(10) & chr(13) & "N° de commande : ";
    strLen := Count(InputCmd);
    cpt := 0;
 
    IF strlen <= 0 then 
        str := str  &  "Aucun paramètre" 
    else 
       (FOR cpt := 1 TO strLen do
        str := str  & InputCmd [cpt] & ", ";
        Str
        )
)
__________________
Luc
luc_chivas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 11h55   #5
Nouveau Membre du Club
 
Inscription : juin 2009
Messages : 90
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 90
Points : 32
Points : 32
Merci Luc Chivas.

J'ai modifié un peu le script pour gérer le cas où aucun paramètre aurait été saisi.

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
WhilePrintingRecords;
LOCAL StringVar str := "Code Fournisseur : ";
LOCAL NumberVar cpt;

LOCAL StringVar Array InputNom;
LOCAL StringVar Array InputCmd;
LOCAL NumberVar strLen;

If HasValue({?Code Fournisseur}) then (
	InputNom := {?Code Fournisseur};
	strLen := Count(InputNom);
	
	FOR cpt := 1 TO strLen Do
        str := str  & InputNom [cpt] & ", ";        
)
else (
    str := str  &  "Aucun paramètre";);

str := str  &  chr(10) & chr(13) & "N° de commande : ";
If HasValue({?N° Commande}) then (
	InputCmd := {?N° Commande};
	strLen := Count(InputNom);
	
	FOR cpt := 1 TO strLen Do
        str := str  & InputNom [cpt] & ", ";  
)
else (
    str := str  &  "Aucun paramètre";
);
Par contre il met sélectionne la zone en violet dans le code et il me dit
Citation:
Insérer une valeur booléenne
. :-/ Je pense qu'encore une fois que c'est lié à ma syntaxe.
Cryos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 17h39   #6
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
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
 
 
WhilePrintingRecords;
LOCAL NumberVar Array InputNom := {?My Parameter};
LOCAL NumberVar Array InputCmd := {?My Parameter 2};
 
LOCAL StringVar str := "Code Fournisseur : ";
LOCAL NumberVar strLen := Count(InputNom);
LOCAL NumberVar cpt;
 
    (IF NOT hasvalue({?My Parameter}) then 
        str := str  &  "Aucun paramètre" 
    else 
        (
        FOR cpt := 1 TO strLen Do
        str := str  & InputNom [cpt] & ", ";
        Str
        )
      ); 
    str := str  &  chr(10) & chr(13) & "N° de commande : ";
    strLen := Count(InputCmd);
    cpt := 0;
 
    IF NOT hasvalue({?My Parameter 2}) then 
        str := str  &  "Aucun paramètre" 
    else 
       (FOR cpt := 1 TO strLen do
        str := str  & InputCmd [cpt] & ", ";
        Str
        )
__________________
Luc
luc_chivas est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/02/2011, 09h18   #7
Nouveau Membre du Club
 
Inscription : juin 2009
Messages : 90
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 90
Points : 32
Points : 32
On est obligé d'utiliser les structures IF-ELSE de cette façon ?

En fait le problème là c'est que si l'utilisateur ne renseigne pas certains paramètres (puisque certains sont facultatif) ils se retrouvent vides. Du coup si ils sont vide le code plante sur ces lignes la :
Code :
1
2
LOCAL NumberVar Array InputNom := {?My Parameter};
LOCAL NumberVar Array InputCmd := {?My Parameter 2};
Cryos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 14h41   #8
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
ben,

je suis surpris, il n'y a pas d'index sur tes arrays ??
__________________
Luc
luc_chivas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 14h29   #9
Nouveau Membre du Club
 
Inscription : juin 2009
Messages : 90
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 90
Points : 32
Points : 32
En réalité il ne peut pas tester la longueur du tableau puisqu'il n'arrive pas à affecter le paramètre à un tableau.

Dès que je teste l'aperçu j'ai le message d'erreur suivant :
Citation:
Aucune valeur n'est indiquée pour le paramètre.
et le premier paramètre de la première ligne est surligné.
Code :
LOCAL StringVar Array InputNom; := {?Code Fournisseur};
En fait moi ce qui me gênais juste c'était la structure du IF mais maintenant le code fonctionne correctement.

La solution est la suivante :
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
WhilePrintingRecords;
LOCAL StringVar Array InputNom;
LOCAL NumberVar Array InputCmd;
 
LOCAL StringVar str := "Code Fournisseur : ";
LOCAL NumberVar strLen := Count(InputNom);
LOCAL NumberVar cpt;
 
    (IF NOT hasvalue({?Code Fournisseur}) then 
        str := str  &  "Aucun paramètre" 
    else 
        (
        InputNom := {?Code Fournisseur};
        FOR cpt := 1 TO strLen Do
        str := str  & InputNom [cpt] & ", ";
        Str
        )
      ); 
    str := str  &  chr(10) & chr(13) & "N° de commande : ";
    strLen := Count(InputCmd);
    cpt := 0;
 
    IF NOT hasvalue({?N° Commande}) then 
        str := str  &  "Aucun paramètre" 
    else 
       (
        InputCmd := {?N° Commande};
        FOR cpt := 1 TO strLen do
        str := str  & InputCmd [cpt] & ", ";
        Str
        )
Problème résolu Merci Luc Chivas !
Cryos 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 12h11.


 
 
 
 
Partenaires

Hébergement Web