IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Lister les valeurs des paramètres [CR 2008]

  1. #1
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 96
    Points : 63
    Points
    63
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : 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
     
    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 :
    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 !

  2. #2
    Modérateur
    Avatar de luc_chivas
    Profil pro
    Consultant BO/Crystal Reports
    Inscrit en
    Avril 2004
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant BO/Crystal Reports

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 942
    Points : 2 720
    Points
    2 720
    Par défaut
    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 ??

  3. #3
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    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 ?

  4. #4
    Modérateur
    Avatar de luc_chivas
    Profil pro
    Consultant BO/Crystal Reports
    Inscrit en
    Avril 2004
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant BO/Crystal Reports

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 942
    Points : 2 720
    Points
    2 720
    Par défaut
    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 : 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
     
    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
            )
    )

  5. #5
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    Merci Luc Chivas.

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

    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
    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
    Insérer une valeur booléenne
    . :-/ Je pense qu'encore une fois que c'est lié à ma syntaxe.

  6. #6
    Modérateur
    Avatar de luc_chivas
    Profil pro
    Consultant BO/Crystal Reports
    Inscrit en
    Avril 2004
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant BO/Crystal Reports

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 942
    Points : 2 720
    Points
    2 720
    Par défaut
    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
     
     
    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
            )

  7. #7
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    LOCAL NumberVar Array InputNom := {?My Parameter};
    LOCAL NumberVar Array InputCmd := {?My Parameter 2};

  8. #8
    Modérateur
    Avatar de luc_chivas
    Profil pro
    Consultant BO/Crystal Reports
    Inscrit en
    Avril 2004
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant BO/Crystal Reports

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 942
    Points : 2 720
    Points
    2 720
    Par défaut
    ben,

    je suis surpris, il n'y a pas d'index sur tes arrays ??

  9. #9
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    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 :
    Aucune valeur n'est indiquée pour le paramètre.
    et le premier paramètre de la première ligne est surligné.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : 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
    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 !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Logger les valeurs des paramètres des requêtes
    Par thebloodyman dans le forum Hibernate
    Réponses: 2
    Dernier message: 12/12/2011, 10h16
  2. Définir les valeurs des paramètres d'une requête
    Par sasuke18 dans le forum Débuter
    Réponses: 9
    Dernier message: 16/12/2010, 20h10
  3. Voir la requete paramétrée avec les valeurs des paramètres
    Par Jdubernat dans le forum Accès aux données
    Réponses: 4
    Dernier message: 27/10/2008, 18h35
  4. Réponses: 1
    Dernier message: 31/05/2008, 13h00
  5. Retrouver les valeurs des paramètres des fonctions d'une DLL
    Par Bernard Martineau dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 10h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo