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

Formules Discussion :

Suppression de lignes


Sujet :

Formules

  1. #1
    Membre à l'essai
    Suppression de lignes
    Bonjour à tous,

    J'ai un souci pour la suppression de lignes en Crystal Report.

    Voici le contexte: j'ai un tableau avec plusieurs colonnes dont une colonne qu'on appellera A et une B.
    Je veux supprimer dans un premier temps les lignes où A=B=0. Puis quand cette suppression est appliquée, ajouter des conditions supplémentaires :suppressions des lignes dont la valeur A est égale à la valeur B de la ligne précédente et la valeur B est égale à la valeur A de la ligne suivante. Je souhaite également supprimer les lignes pour lesquelles A=B.

    J'ai donc mis dans la formule suppression de mon Expert de section:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    ((Previous ({B})=({A})) and (Next ({A})=({B}))) 
    or {A} = {B}


    Mais je ne sais pas comment intégrer le fait que je veuille dans un premier temps supprimer les lignes où A=B=0. Comment créer une hiérarchie dans les suppressions?

    Merci d'avance pour votre aide.

    Marie

  2. #2
    Modérateur

    Bonour Marie,

    tu es partie sur la fait fait que CR renvoie False ou True lors d'une comparaison.

    tu peux forcer ce renvoi en faisant une chaine de If then Else..

    IF A=B then true else if (previous.......) etc.... et là tu pourras gérer ta hiérarchie..
    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 à l'essai
    Merci pour ta réponse luc_chivas.
    Je teste ça et je te tiens au courant.

    Bonne journée.

  4. #4
    Membre à l'essai
    Re bonjour Luc,

    J'ai testé une formule dans mon Expert de section

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    if {PLREA.QKMD} = 0 then true else 
    if {PLREA.QKMD} = {PLREA.QKMF} then true else 
    if ((Previous ({PLREA.QKMF})=({PLREA.QKMD})) and (Next ({PLREA.QKMD})=({PLREA.QKMF}))) then true else false


    Je veux lui faire comprendre que premièrement il doit me supprimer les lignes où PLREA.QKMD est égal à 0 puis dans un second temps les lignes où PLREA.QKMD est égal à PLREA.QKMF et pour finir les lignes où PLREA.QKMD est égal au PLREA.QKMF de la ligne précédente et où PLREA.QKMF est égal au PLREA.QKMD de la ligne suivante.

    Mais avec cette formule, il n'a pas l'air de comprend ma troisième et dernière condition puisque je retrouve des lignes avec le PLREA.QKMF précédent et le PLREA.QKMF suivant semblables respectivement aux PLREA.QKMD et au PLREA.QKMF de la ligne en cours.

    Y aurait-il un souci dans la formule?

    Merci d'avance pour ton aide.

    Marie

  5. #5
    Modérateur

    Marie;

    Dans ta dernière condition, tu testes l'enregistrement précedent et l'enregistrement suivant, pas la ligne en cours...
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    if ((Previous ({PLREA.QKMF})=({PLREA.QKMD})) and (Next ({PLREA.QKMD})=({PLREA.QKMF})))


    tu demandes à effacer la ligne si les deux valeurs précédentes sont égales ET les deux valeurs suivantes... genre je suis sur la ligne 2

    QKMD QKMF
    1 1
    34 12
    4 4
    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

  6. #6
    Membre à l'essai
    Merci pour ta réponse.

    Je vois bien ce que tu veux dire. Du coup, j'ai essayé de jouer sur les parenthèses pour isoler le Next et le Previous avec la valeur du dessus ou du dessous et pas avec toute la ligne.
    Mais ça ne fonctionne tjs pas !
    Je te mets quand même le code même si je pense qu'il y a une autre astuce...

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    if {PLREA.QKMD} = 0 then true else 
    if {PLREA.QKMD} = {PLREA.QKMF} then true else 
    if (((Previous({PLREA.QKMF}))=({PLREA.QKMD})) and ((Next ({PLREA.QKMD}))=({PLREA.QKMF}))) then true else false

  7. #7
    Modérateur

    bonjour,

    jai repris ta formule précédente, et j'ai remplacée les "true" par des numéros, j'ai donc de 1 à 3 en fonction des conditions. j'ai inséré cette formule dans mon rapport sur le ligne détail pour voir quelle condition était remontée. J'ai un fichier Excel qui comprend tes trois configurations
    QKMD QKMF
    1 4
    2 5
    3 6
    0 7
    1 4
    2 5
    3 6
    4 4
    9 9
    9 9
    1 5
    5 7
    7 1

    Ca à l'air de fonctionner.. mais il y a peu être quielque chose qui m'échappe
    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

  8. #8
    Membre à l'essai
    Bonjour Luc,

    Merci pour le temps consacrer sur mon problème et désolée pour ma réponse tardive.
    Je ne comprends vraiment pas d'où vient mon problème mais je vais me remettre sur le sujet et je te tiens au courant dès que je trouve le problème.

    Bonne fin de journée.

  9. #9
    Membre à l'essai
    Bonjour Luc,

    Je pense avoir compris le problème. Il ne semble toujours pas faire de priorités.
    Je m'explique. Pour le tableau ci dessous, je veux qu'il me supprime déjà les lignes pour lesquelles QKMD et QKMF sont égales à 0 (donc ici la ligne 3), puis les lignes pour lesquelles QKMD=QKMF (ici ligne 2) et pour finir ma fameuse condition 3 pour regarder le QKMF précédent et le QKMD suivant (mais sans prendre en compte les lignes déjà supprimer donc par exemple pour la ligne 4, il faut comparer QKMD avec le QKMF de la ligne 1 (puisque les lignes 2 et 3 ont déjà été supprimées).
    Du coup, pour le tableau ci-dessous moi j'aimerais qu'il garde seulement les lignes 1, 5 et 6. Mais lui me garde aussi la ligne 4 parce que je pense qu'il compare le QKMD de la ligne 4 (45) avec le QKMF de la ligne 3 (0).

    QKMD QKMF
    32 45
    45 45
    0 0
    45 52
    52 73
    78 82

    Je ne sais pas si tu as une solution. Moi en tout cas je ne vois pas comment faire.
    Merci d'avance pour ta réponse. A bientôt.

    Marie

  10. #10
    Modérateur

    OK....

    ce qui m'avait échappé, c'est le "Sans prendre en compte les lignes déjà supprimées".....
    Previous ou next s'occupe uniquement des enregistrements lus, en aucun cas de ce qui apparait dans le rapport.....
    Je regarde ce que je trouve et je reviens vers toi
    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

  11. #11
    Membre à l'essai
    Merci beaucoup Luc. Je n'avais pas été assez explicite. Je suis désolée.
    A bientôt.

  12. #12
    Modérateur

    Combien penses tu avoir d'enregistrements dans tes rapports.. on doit pouvoir travailler avec des tableaux et des index...
    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

  13. #13
    Membre à l'essai
    Mon rapport est trié par salarié. J'ai 35 salariés et environ (mais c'est très variable) 3 ou 4 enregistrements par salarié.

  14. #14
    Modérateur

    Bon alors.....
    Solution somme toute assez facile.. j'étais parti dans des arrays, etc... le délire quoi....... et puis mon coté antillais a refait surface et j'ai trouvé autrechose...

    tu vas traiter tes deux premier cas dans ton expert selection

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    {Feuil1_.QKMD} <> 0  AND
    {Feuil1_.QKMD} <> {Feuil1_.QKMF}


    et ton troisième cas dans ta section comme tu le fais actuellement, mais il n'y a plus qu'un test...
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    (((Previous({PLREA.QKMF}))=({PLREA.QKMD})) and ((Next ({PLREA.QKMD}))=({PLREA.QKMF})))
    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

  15. #15
    Membre à l'essai
    Merci beaucoup Luc. Ça fonctionne parfaitement et c'était en effet très simple à mettre en place.
    Depuis le temps que je cherche une solution pour ce problème. C'est super.