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

SAP Crystal Reports Discussion :

Affichage 1 seul résultat / valeurs multiples [CR XI]


Sujet :

SAP Crystal Reports

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 109
    Points : 61
    Points
    61
    Par défaut Affichage 1 seul résultat / valeurs multiples
    Bonjour,

    j'aimerais afficher un résultat dans une formule en fonction de ce qui se trouve dans le champ d'une base de données (contenant donc plusieurs valeurs).

    Je m'explique: le champ de ma BDD peut contenir 3 résultats : OK, ALARME ou REJET.

    Si on a au moins 1 REJET, le résultat doit être "REJET". Sinon, si on a au moins 1 alarme, le résultat doit être "ALARME". Sinon c'est "OK.

    Quelques exemples:

    OK
    OK
    OK
    OK
    ...
    -> le résultat affiché doit être "OK" ou

    OK
    OK
    ALARME
    REJET
    -> le résultat affiché doit être "REJET" (en fait dès que REJET

    Je ne pense pas qu'on puisse le faire avec un champs résumé étant donné qu'il s'agit d'une chaine ...

    Quelqu'un aurait-il une idée?

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de luc_chivas
    Profil pro
    Consultant BO/Crystal Reports
    Inscrit en
    Avril 2004
    Messages
    1 941
    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 941
    Points : 2 719
    Points
    2 719
    Par défaut
    bonjour

    formule dans ta section détail

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    whileprintingrecords;
    Select {monchamp]
    Case 'REJET' :
    BooleanVar R:=1;
    Case 'ALARM' :
    BooleanVar ALARM:=1;
    Default :
    BooleanVar OK :=1 ;
    Formule à l'endroit ou tu veux le résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    whileprintingrecords
    NumberVar REJET;
    NumberVAR ALARM;
    NumberVAR OK;
     
    If ALARM then 'ALARM' else if REJET then 'REJET' else 'OK'

    Vérifie la syntaxe et autres, je n'ai pas CR sous la main... c'est dans cet esprit

    ne pas oublier de reinitaliser les variables en entête
    Luc

    Disponible - Intervention sur demande tout pays, toutes régions
    Formateur Crystal Reports (toutes versions)
    Contrat de support possible
    N'hésitez pas.... http://paypal.me/lucrascar

  3. #3
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 202
    Points : 258
    Points
    258
    Par défaut
    Si j'ai bien compris tu n'affiche pas tous les enregistrements détails, la visibilité commence donc à une section de groupe.
    Tu fais une formule {@tri} qui vaut 1 pour OK, 2 pour ALARME et 3 pour REJET.
    Puis,si ta première section de groupe visible est le pied de groupe tu tries les enregistrements en tri croissant de {@tri} (décroissant si c'est l'en tête de groupe qui est visible, comme tu veux )
    et tu mets ton champs tel quel dans ta première section de groupe visible, oh surprise il affiche le bon

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 109
    Points : 61
    Points
    61
    Par défaut
    Bonsoir,

    merci pour vos réponses. GaelleH, Malheureusement, je n'avais pas précisé que je voulais intégrer ce résultat dans un tableau croisé, donc je ne peux pas utiliser ta solution.

    Du coup j'ai adopté pour celle de luc_chivas. Par contre j'ai plusieurs problèmes:

    1- lorsque je mets ma formule en place, tout ce qui est après la première ligne du "case" n'est pas considéré comme faisant partie de la formule.
    J'ai résolu ce problème en déclarant les variables comme des numériques et en incrémentant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Global NumberVar R;
    Global NumberVar limite;
    Global NumberVar OK;
     
    whileprintingrecords;
    Select {mon_champ}
    Case "rejet" : R:=R + 1
    Case "limite" : limite:=limite + 1
    Default : OK :=OK + 1
    Par contre je ne retombe pas sur mes pieds au niveau de la formule de l'affichage car j'obtiens toujours "/" même si les valeurs ne sont pas toutes à 0:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Global NumberVar R;
    Global NumberVar limite;
    Global NumberVar OK;
     
    if R >= 1 then "Insatisfaisante" else
      if limite >= 1 then "Acceptable" else
        if OK >= 1 then "Satisfaisante" else
        "/"

  5. #5
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 202
    Points : 258
    Points
    258
    Par défaut
    Citation Envoyé par pierregr Voir le message
    GaelleH, Malheureusement, je n'avais pas précisé que je voulais intégrer ce résultat dans un tableau croisé, donc je ne peux pas utiliser ta solution.
    Si tu veux une sélection seulement des enregistrements intéressants pour le tableau croisé il faut utiliser la formule de sélection de groupe ( maximum({@tri},{tongroupe}) = {@tri}).

    Citation Envoyé par pierregr Voir le message
    Du coup j'ai adopté pour celle de luc_chivas. Par contre j'ai plusieurs problèmes:
    1- lorsque je mets ma formule en place, tout ce qui est après la première ligne du "case" n'est pas considéré comme faisant partie de la formule.
    Tu dois entourer tout le pavé du case d'une parenthèse ouvrante et fermante et mettre le ";" aprés la fermante.

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 109
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par GaelleH Voir le message
    Si tu veux une sélection seulement des enregistrements intéressants pour le tableau croisé il faut utiliser la formule de sélection de groupe ( maximum({@tri},{tongroupe}) = {@tri}).



    Tu dois entourer tout le pavé du case d'une parenthèse ouvrante et fermante et mettre le ";" aprés la fermante.
    Merci pour ta réponse. Je n'ai pas réussi par la solution de luc_chiavas, mais la tienne fonctionne en tous cas.

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

Discussions similaires

  1. [AC-2013] Champs à valeur multiple - Affichage formulaire
    Par Math19 dans le forum VBA Access
    Réponses: 6
    Dernier message: 20/06/2014, 14h28
  2. [XSLT 2.0] Affichage des seules valeurs modifiées
    Par raphael75015 dans le forum XSL/XSLT/XPATH
    Réponses: 11
    Dernier message: 20/09/2013, 09h12
  3. Réponses: 3
    Dernier message: 27/02/2012, 15h36
  4. Réponses: 5
    Dernier message: 11/03/2008, 11h41
  5. [CR8] Champs de paramètres à valeurs multiples
    Par Nout dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/02/2005, 16h51

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