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 :

Incrémenter une variable en CR9


Sujet :

SAP Crystal Reports

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 38
    Points : 20
    Points
    20
    Par défaut Incrémenter une variable en CR9
    Bonjour,

    Je suis très nul en code mais j'ai un petit programme à faire en CR9.
    J'explique:

    J'ai un champ numéro de série qui normalement s'incrémente de 1 pour chaque produit d'une commande. Il arrive qu'il y a des trous pour la commande, c'est à dire qu'on passe du numéro 2 au 4 directement.
    J'ai besoin d'afficher la valeur minimale et maximale de chaque numéro de série entre chaque trou;
    exemple:
    J'ai les numéros de 1 à 20 puis 22à 26
    Et bien il faut que j'affiche 1 à 20, 22 à 26

    Il faut donc que je fasse un petit code qui teste si le numéro de série s'incrémente bien de 1, si ce n'est pas le cas je dois afficher la première et dernière valeur de l'intervalle.
    J'ai fait des essais mais j'y arrive pas. Y'aurait il un sauveur dans le coin SVP

    Merci

  2. #2
    cdu
    cdu est déconnecté
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 196
    Points : 222
    Points
    222
    Par défaut
    salut,
    en syntax crystal ça pourrait donner ça:

    formule initvar, à placer un entête de groupe produit_par_commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    numbervar debut;
    numbervar fin;
    stringvar res;
    debut:=0;
    fin:=0;
    res:="";
    formule incremente, à placer dans le detail du groupe produit_par_commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    numbervar debut;
    numbervar fin;
    stringvar res;
    if debut=0
       (debut:=detaildecommande.serie;
        fin:=detaildecommande.serie;
       )
    else
      if (fin+1)=detaildecommande.serie
         fin:=detaildecommande.serie
      else
         (res:=totext(debut)+" à "+totext(fin)+"  ";
          debut:=detaildecommande.serie;
          fin:=detaildecommande.serie;)
    il ne te reste qu'à afficher

  3. #3
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Impeccable Cdu , il manquait juste les Then.
    j'ai ajouté un petit iif pour mettre la virgule entre chaque élément de réponse ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    numbervar debut; 
    numbervar fin; 
    stringvar res; 
    if debut=0 then
       (debut:=detaildecommande.serie; 
        fin:=detaildecommande.serie; 
       ) 
    else 
      if (fin+1)=detaildecommande.serie then
         fin:=detaildecommande.serie 
      else 
         (res:= iif(res="",""," , ") + totext(debut)+" à "+totext(fin)+"  "; 
          debut:=detaildecommande.serie; 
          fin:=detaildecommande.serie;)
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 38
    Points : 20
    Points
    20
    Par défaut
    Tout d'abord merci pour ton aide

    Mais j'y arrive pas. En faites j'ai un seul groupe c'est ma commande . j'ai donc mis mon initvar dans mon entête de groupe et mon incrvar dans mon détail. j'ai ensuite créer une fonction affvar qui reprend la variable res pour l'afficher. mais ca ne fonctionne pas et quand je regarde le code j'ai l'impression que ça ne peut pas fonctionner comme ça .
    Est ce qu'il faut que je crée une fonction affichage?

  5. #5
    cdu
    cdu est déconnecté
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 196
    Points : 222
    Points
    222
    Par défaut
    c'est possible que ça ne marche pas

    j'ai mal compris ton attente, que veux-tu afficher et où ?

    quand tu dis que ça ne marche pas, qu'est-ce qui ne marche pas et où? pour tester affiche les différentes variables à chaque ligne de ta section détail

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 38
    Points : 20
    Points
    20
    Par défaut
    Alors en faites ça marche à moitié.

    J'ai donc créer une fonction affres:
    stringvar res;
    stringvar essai;
    whileprintingrecords;
    essai:=res;

    Je l'ai mise dans mon détail et ça me donne bien le 1er interval 'De 1 à 284' mais ne me donne pas les autre intervals, qui doit être de '286 à 401'.
    Si je mets mon n0série dans mon détail avec les 3 variables: res, debut, fin il me donne toujours la même chose pour n'importe quel n° de série sur les 3 variables c'est à dire res='De 1 à 284', debut ='286', fin='401'
    Ai je bien placé l'initvar?

    Donc ce que je veux afficher c'est pour ma commande avec des trous, visualiser en dessous:
    min:1 max: 284
    min:285 max:401. (Chaque numéro doit être indépendant car en format code à barre)
    Pour une commande sans trou:
    min:1 max:401 (aussi en code barre)

    Il me semble qu'il me manque un groupe, l'idéal serait d'avoir affres en groupe mais c'est pas possible.

    J'espère que je suis suffisament clair.

  7. #7
    cdu
    cdu est déconnecté
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 196
    Points : 222
    Points
    222
    Par défaut
    ma faute ....
    il ya des erreurs dans les formules que je t'ai données :
    1) je n'incrémente pas res mais le remplace donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    res:=res+totext(debut)+" à "+totext(fin)+"  ";
    2) ensuite il faut aussi à penser à forcer l'incrémentation de res une fois arrivé en pied de groupe dans une formule séparée ou dans la formule d'affichage

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 38
    Points : 20
    Points
    20
    Par défaut
    Je ne comprends pas ta formule, c'est quoi ton et
    Comment tu forces l'incrémentation?

    Je suis désolé pour toutes ces questions mais je ne fais pas du tout de code donc des grosses lacunes.

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 38
    Points : 20
    Points
    20
    Par défaut
    salut, Me revoila

    Bon ben après maintes et maintes essai, je n'y arrive toujours pas, est ce que quelqu'un pense que c'est possible de le faire ou pas?

    Merci d'avance pour votre aide

  10. #10
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    hello...
    j'espèrais trouvé une réponse ici, vu que le sujet porte le tag ..

    mais non..

    quelqu'un a-t-il une solution? une bon tuto sur la gestion des événements en CR? une méthode éprouvée de la gestion des formules et variables?

    Merci d'avance
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

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

Discussions similaires

  1. Boucle: Incrémenter une variable qui soit une cellule
    Par samuel_p dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/01/2009, 14h39
  2. Réponses: 4
    Dernier message: 09/12/2008, 22h33
  3. incrémenter une variable à chaque clique sur un lien
    Par Piccolo_son dans le forum Langage
    Réponses: 7
    Dernier message: 17/12/2007, 21h56
  4. [XSLT] incrémenter une variable
    Par nemya dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 26/09/2005, 17h12
  5. [débutant][xsl]incrémenter une variable
    Par guitalca dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 01/04/2003, 15h19

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