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 :

[CR] Jours ente deux dates


Sujet :

SAP Crystal Reports

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 47
    Points : 30
    Points
    30
    Par défaut [CR] Jours ente deux dates
    Bjr,
    Je dois faire un état crystal qui doit mettre des croix dans les jours pris en congés payés, par exemple j'ai comme date pour Sbis CP du 29/07 au 03/08 et si on demande l'état de congés pour 08/2004, il faudrait que je mette une croix pour 01, 02 et 03/2004 donc avoir :
    01 02 03 04 05 06 ......
    Sbis X X X
    Y a t il une facon simple pour gerer ce probleme ?
    D'avance merci

  2. #2
    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
    Au vu de ton explication, tu ne pourras pas faire une table croisée.
    Il te faudra donc un etat avec tes 31 colonnes.

    Il te faut une formule en détail ou tu alimentes un tableau(31) de chaines.
    Il te faut un groupe par salarié pour pouvoir gérer plusieurs périodes de congés dans 1 même mois pour 1 même salarié et en début de groupe tu réinitialises le tableau de chaine
    Et en fin de groupe il te faut 31 formules d'affichage du tableau:
    Tab(1) pour colonne 1
    Tab(2) pour colonne 2

    C'est la première solution qui me vient à l'esprit et c'est pas forcément la plus simple mais en tout cas cette possibilité doit fonctionner.
    En considérant qu'il y ai 2 tables :

    SALARIE LEFT JOIN SALARIECONGE

    Bon courage.
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 47
    Points : 30
    Points
    30
    Par défaut
    Quelle serait pour toi la formule de detail ?

  4. #4
    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
    Ci joint une formule qui peut-être grandement optimisée et qui ne colle surement pas tout à fait à ton cas.
    Mais c'est exemple de formule detail.
    En considérant que Tu initialises le tableau en début groupe salarié.
    La syntaxe est Basic en crystal 10.
    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
    32
    33
    34
    35
    36
     
    WhilePrintingRecords
    '
    Global TabDate(31) as string
    Dim MaxDate as Date
    Dim I as Number
    Dim Annee as Number
    Dim Mois as Number
    '
    Dim AnneeS as Number
    Dim MoisS as Number
     
    '
    ' Pour avoir le jour max du mois
    '
    Annee = 2004   --> ca doit être paramètrable
    Mois = 2       --> ca doit être paramètrable
    '
    '
    MoisS = MoisS + 1
    AnneeS = Annee
    If MoisS = 13 Then
       AnneeS = AnneeS + 1
       MoisS = 12  
    End if
    '
    For I=1 To Day(DateTimeValue(AnneeS,MoisS,1)-1)
        if DateTimeValue(Annee,Mois,I) >= {DateDebut} And DateTimeValue(Annee,Mois,I) <= {DateFin} Then
           ' 
           ' Congé Pour le jour I du Mois 
           ' 
           TabDate(I) = "X"
        End if
    Next
     
    Formula = ""

    Bon courage ....
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 47
    Points : 30
    Points
    30
    Par défaut
    Je viens d'essayer de traduire ta syntaxe basic en syntaxe crystal 8 :

    j'ai donc une initialisation de tableau(initab) en entete de groupe salarie :

    Local StringVar Array b;
    redim b[31];
    Local NumberVar i;

    je recupere mon jour de debut(daydebprendre) et jour de fin(dayfinprendre) :

    day({@datedebprendre}) et day({@datefinprendre}) affiche les bonnes valeurs

    et par ligne salarie j'ai un : alimtab

    whileprintingrecords;
    Local StringVar Array b;
    Local NumberVar i;
    For i := {@daydebprendre} To {@dayfinprendre} Do
    (
    b[i]:="X"
    );


    Quand je lance mar requete il met

    Un indice doit etre compris entre 1 et la taille du tableau

    Pourquoi ?

  6. #6
    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
    Ta variable Tableau doit être de type GLOBAL dans les 2 formules:
    Ex Formule Init :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Global StringVar array TabDate;
    Redim TabDate[31];
    ""
    Un indice doit etre compris entre 1 et la taille du tableau
    Normal puisque ton tableau a été déclaré en Local dans les 2 formules

    Pour le reste c'etait presque bon je pense :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    whileprintingrecords; 
    Global StringVar Array TabDate; 
    Local NumberVar i; 
    For i := {@daydebprendre} To {@dayfinprendre} Do 
    ( 
    TabDate[i]:="X" 
    );
    J'espère que tu vas réussir à t'en sortir .... Courage ...

    EDIT:

    Le code était juste, Edit pour rien... Oups
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 47
    Points : 30
    Points
    30
    Par défaut
    je n'ai plus d'erreur, c'est ok

    Mais maintenant quelle est la fonction qui me permet d'afficher le contenu du tableau, je voudrais le faire une colonne à la fois

    Merci

  8. #8
    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
    C'est la partie la plus chiante en fait, il faut que tu crées 31 formules en fin de groupe salarié, 1 pour chaque colonne.

    Formule 1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    WhilePrintingRecords;
    Global StringVar Array TabDate;
    TabDate(1)
    Formule 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    WhilePrintingRecords;
    Global StringVar Array TabDate;
    TabDate(2)
    Et ainsi de suite ....
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 47
    Points : 30
    Points
    30
    Par défaut
    Ok tout marche tres bien et encore merci

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/05/2006, 19h16
  2. Générer le listing des jours entre deux dates
    Par gsmdu62 dans le forum Langage
    Réponses: 8
    Dernier message: 01/05/2006, 11h08
  3. [MS-DOS] Compter les nombres de jours entre deux dates diffé
    Par Furius dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 19/02/2006, 13h33
  4. nombre de jours entre deux date
    Par mzt.insat dans le forum Langage
    Réponses: 13
    Dernier message: 01/02/2006, 10h34
  5. [Dates] Nombre de jours entre deux dates
    Par cmoiscrat dans le forum Langage
    Réponses: 3
    Dernier message: 22/09/2005, 15h25

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