Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Crystal Reports
Crystal Reports Forum d'entraide sur Crystal Reports. Avant de poster --> FAQ Crystal, Tutoriels Crystal
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/08/2004, 15h59   #1
Invité régulier
 
Inscription : juin 2002
Messages : 41
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 41
Points : 9
Points : 9
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
sbis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2004, 16h21   #2
Modérateur
 
Avatar de L.nico
 
Homme Nicolas LAURET
Chef de projet en SSII
Inscription : novembre 2003
Messages : 1 024
Détails du profil
Informations personnelles :
Nom : Homme Nicolas LAURET
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2003
Messages : 1 024
Points : 1 744
Points : 1 744
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.
__________________
Modérateur Business Intelligence / Windev

A lire avant de poster
Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton
L.nico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2004, 16h28   #3
Invité régulier
 
Inscription : juin 2002
Messages : 41
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 41
Points : 9
Points : 9
Quelle serait pour toi la formule de detail ?
sbis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2004, 16h53   #4
Modérateur
 
Avatar de L.nico
 
Homme Nicolas LAURET
Chef de projet en SSII
Inscription : novembre 2003
Messages : 1 024
Détails du profil
Informations personnelles :
Nom : Homme Nicolas LAURET
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2003
Messages : 1 024
Points : 1 744
Points : 1 744
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 :
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 ....
__________________
Modérateur Business Intelligence / Windev

A lire avant de poster
Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton
L.nico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2004, 12h07   #5
Invité régulier
 
Inscription : juin 2002
Messages : 41
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 41
Points : 9
Points : 9
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 ?
sbis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2004, 14h07   #6
Modérateur
 
Avatar de L.nico
 
Homme Nicolas LAURET
Chef de projet en SSII
Inscription : novembre 2003
Messages : 1 024
Détails du profil
Informations personnelles :
Nom : Homme Nicolas LAURET
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2003
Messages : 1 024
Points : 1 744
Points : 1 744
Ta variable Tableau doit être de type GLOBAL dans les 2 formules:
Ex Formule Init :

Code :
1
2
3
Global StringVar array TabDate;
Redim TabDate[31];
""
Citation:
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 :
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
__________________
Modérateur Business Intelligence / Windev

A lire avant de poster
Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton
L.nico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2004, 14h13   #7
Invité régulier
 
Inscription : juin 2002
Messages : 41
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 41
Points : 9
Points : 9
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
sbis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2004, 14h19   #8
Modérateur
 
Avatar de L.nico
 
Homme Nicolas LAURET
Chef de projet en SSII
Inscription : novembre 2003
Messages : 1 024
Détails du profil
Informations personnelles :
Nom : Homme Nicolas LAURET
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2003
Messages : 1 024
Points : 1 744
Points : 1 744
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 :
1
2
3
WhilePrintingRecords;
Global StringVar Array TabDate;
TabDate(1)
Formule 2:
Code :
1
2
3
WhilePrintingRecords;
Global StringVar Array TabDate;
TabDate(2)
Et ainsi de suite ....
__________________
Modérateur Business Intelligence / Windev

A lire avant de poster
Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton
L.nico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2004, 15h37   #9
Invité régulier
 
Inscription : juin 2002
Messages : 41
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 41
Points : 9
Points : 9
Ok tout marche tres bien et encore merci
sbis est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h33.


 
 
 
 
Partenaires

Hébergement Web