Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Business Objects > Deski
Deski Forum d'entraide Deski (client lourd)
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 15/11/2007, 17h10   #1
Candidat au titre de Membre du Club
 
Inscription : octobre 2007
Messages : 48
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 48
Points : 10
Points : 10
Par défaut [BO 6.5] Afficher un calendrier

Salut,

J'explique mon besoin et j'attends une solution...

Version BO 6.5


Je veux produire un rapport qui donnerait les absences d'un employé sur une période de deux mois. Ma problématique est dans la façon dont le client a besoin de le voir !

Code :
1
2
3
4
Ex:
                             Jan/01  Jan/02  Jan/03  Jan/04  Jan/05  etc... 
10301062  Joe Blos             Fér       Vac                   Mal                       
10301093  Josette Blette                               Vac     Vac
Peut-être que ce n'est pas vraiment possible avec un univers et que je devrai créer une "Stored Procedure" qui irait mettre dans une table, où chaque enregistrement aurait le numéro de l'employé et tous les jours de l'année, le code d'absence (vac, fér, mal etc..) correspondant au jour.
Ça revient à créer une table avec 367 champs (minimum) par enregistrement.

Si je fais un select simple (univers ou SQL à la carte) j'obtiens un numéro d'employé, un code absence et la date

Code :
1
2
3
4
5
6
Ex:
10301062      Fér   2007-01-01
10301062      Vac   2007-01-02
10301062      Mal   2007-01-05
10301093      Vac   2007-01-04
10301093      Vac   2007-01-05    etc...
Comment arriver à afficher tous les jours, même ceux où je n'ai pas d'absences ?

Merci d'avance à ceux que ça intéresse !

A+
Hélène
jomphh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2007, 18h17   #2
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 181
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 181
Points : 2 717
Points : 2 717
Ah c'est déjà plus clair ...

2 solutions :
  • Intégrer dans l'univers (si elle n'existe pas) une table calendrier du style
Calendrier.JourID
01/01/2007
02/01/2007
03/01/2007
....
31/12/2007

Dans l'univers tu l'importes et fais une jointure externe !
Calendrier.JourID = TableCongés.LaDate(+)

sinon
  • Dans Designer version BO 6 Tu crée une Table dérivée .... de Dual !
SQL :
Code :
1
2
3
4
SELECT to_date('20070101','yyyymmdd') + (rownum - 1)
FROM dual
connect BY to_date('20070101','yyyymmdd') + (rownum - 1) <= to_date('20071231','yyyymmdd');
C'est magique !
  • En version BO 5
Tu ajoutes ce SQL dans le sql à la carte
Code :
1
2
3
4
5
6
7
8
9
10
11
SELECT 
B.NUMEMPLOYE, B.CODEABSENCE, 
A.LEJOUR
FROM TATABLECONGES B, 
(
SELECT to_date('20070101','yyyymmdd') + (rownum - 1)
FROM dual
connect BY to_date('20070101','yyyymmdd') + (rownum - 1) <= to_date('20071231','yyyymmdd')
) A
WHERE A.LEJOUR = B.DATECONGE(+);
Attention CONNECT BY ne fonctionne qu'en Oracle 9ir2 et supérieur.
  • En Oracle 8 :
Code :
1
2
3
4
5

SELECT to_date('20070101','yyyymmdd') + rownum - 1 
FROM dual
WHERE 
to_date('20070101','yyyymmdd') + (rownum - 1) <= to_date('20071231','yyyymmdd');
Me dire si problème j'ai pas testé

Amicalement,
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2007, 14h44   #3
Candidat au titre de Membre du Club
 
Inscription : octobre 2007
Messages : 48
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 48
Points : 10
Points : 10
Merci Bruno,
Ça fonctionne comme un charme..
J'ai fait une table dérivée (table calendrier).

Cependant il me reste une question en suspend

Dans mon rapport j'ai une première requête ou j'importe le no employé, le nom, le code absence et la date pour un secteur donné, entre deux dates.

La deuxième requête, j'importe les dates de la table calendrier, entre deux dates (les mêmes que la requête no1).

Ça fonctionne bien sauf que je n'ai pas tous les employés du secteur seulement ceux qui ont des absences.

Alors j'ai créé une troisième requête où j'importe tous les employés du secteur(même que requête no1) No employé, nom, date ancienneté et sous-groupe.

Mon rapport ne donne pas le résultat voulu, j'aimerais faire un maitre avec le sous-groupe, mais si je le sors de mon cube alors j'ai seulement les dates où il y a des congés, je perd les dates où il n'y a rien. Par contre si je met le sous-groupe dans le cube et que je fais une rupture c'est ok.

Mais la madame est têtue et elle aimerait bien faire un maître avec son sous-groupe .

La question qui tue : Est-ce possible

Merci
Hélène
jomphh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2007, 15h19   #4
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 181
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 181
Points : 2 717
Points : 2 717
Salut Hélène,
Tout ceci me semble bien compliqué !
Résumons :
Citation:
Ça fonctionne comme un charme..
J'ai fait une table dérivée (table calendrier).
Restons ... sous le charme !
Ta table dérivée est dans l'univers.
Tu n'as bien sûr pas oublié de faire une jointure externe comme je te l'avais indiqué.
Code :
CALENDRIER.JOURID = TABLE.CHAMPDATE(+)
Vérifier que le (+) est bien du côté de Table pas calendrier
Pour cela cocher la case côté Calendrier (si ma mémoire est bonne)

En revanche je n'ai pas pensé à te dire qu'il fallait :
soit créer un objet Dimension supplémentaire Jour du calendrier
Code :
SELECT CALENDRIER.JOURID
MEA CULPA !
Et c'est cet objet là que tu prends dans ta requête en substitution de l'objet Date habituel.
Dès lors tu auras toutes les dates de calendrier et seulement les infos existantes correspondantes sinon null.

Bien entendu tu peux généraliser ta jointure d'une unique table calendrier vers toutes les tables possédant un champ Date
(à condition de l'intégrer dans les contextes si tu en as mais ceci est une autre histoire ...)
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2007, 17h11   #5
Candidat au titre de Membre du Club
 
Inscription : octobre 2007
Messages : 48
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 48
Points : 10
Points : 10
Désolé monsieur bruno,

J'ai suivi toutes vos instructions à la lettre et ça ne fonctionne pas...

J'ai seulement les tx's avec des codes absences

à suivre
Hélène
jomphh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2007, 18h15   #6
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 181
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 181
Points : 2 717
Points : 2 717
Hélène,
Il me faut ton SQL
soit SQL à la carte
soit SQL généré par la requête basée sur l'univers dans lequel tu as rajouté Table dérivée, Jointure et Objet associé.

+ un exemple (une ligne ou deux) des données dans le cube (gestionnaire de données) pas dans le tableau
A +
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2007, 15h27   #7
Candidat au titre de Membre du Club
 
Inscription : octobre 2007
Messages : 48
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 48
Points : 10
Points : 10
Bruno,

Voilà mon SQL généré (pas à la carte)...

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
SELECT   
  VP_EMPLOYEEV42.PERSONNUM,
  Sous_groupe.PERSONCSTMDATATXT,
  PAYCODE.NAME,
  CALENDRIER.DATE_CAL
FROM
  VP_EMPLOYEEV42,
  ( SELECT personcstmdata.PERSONID,personcstmdata.PERSONCSTMDATATXT
    FROM personcstmdata
    WHERE personcstmdata.CUSTOMDATADEFID = 6) Sous_groupe,
  PAYCODE,
  ( SELECT to_date('20060101','yyyymmdd') + (rownum - 1) AS Date_cal
    FROM dual
    connect BY to_date('20060101','yyyymmdd') + (rownum - 1) <= to_date('20081231','yyyymmdd')) CALENDRIER,
  WFCTOTAL
WHERE
  ( WFCTOTAL.EMPLOYEEID=VP_EMPLOYEEV42.EMPLOYEEID  )
  AND  ( (WFCTOTAL.PAYCODEID=PAYCODE.PAYCODEID)  AND (PAYCODE.TYPE = 'P')  )
  AND  ( Sous_groupe.PERSONID(+)=VP_EMPLOYEEV42.PERSONID  )
  AND  ( WFCTOTAL.APPLYDTM(+)=CALENDRIER.DATE_CAL  )
  AND  
  (
       VP_EMPLOYEEV42.HOMELABORLEVELNM7  =  '350-01'
  AND  VP_EMPLOYEEV42.HOMELABORLEVELNM3  IN  ('00706', '06101', '06202')
  AND  PAYCODE.NAME  IN  ('350-VAC 07-08', '350-VAO 07-08')
  AND  CALENDRIER.DATE_CAL  BETWEEN  to_date('2007-12-01', 'YYYY-MM-DD') AND to_date('2007-12-31','YYYY-MM-DD')
  )
Le résultat est ceci, (assez difficile à formater ) ...
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
	No. employé	Gr	12/1	12/2	12/3	12/4	12/5	12/8	12/9	12/10	12/11	12/14	12/15	12/16	12/17	12/18	12/19	12/20	12/21	12/22	12/23	12/24	12/25	12/26	12/27	12/28	12/29	12/30	12/31
	35006628	205	 	 	 	 	 		 	 	 	 	 		 													V	V
	35006675	205	 	 	 	 	 		 	 	 	 	 		 									V	V	V			
	35008143	205	 	 	 	 	 		 	 	 	 	 		 						V	V	V						
	35008366	205	 	 	 	 	 		 	 	 	 	 		 										V	V	V		
	35005229	396	 	 	 	 	 		 	 	 	 	 		 							V	V	V	V	V			V
	35005230	396	 	 	 	 	 		 	 	 	 	 		 							V	V	V	V	V			V
	35005315	396	 	 	 	 	 		 	 	 	 	 		 							V	V	V	V	V			V
	35006386	396	 	 	 	 	 		 	 	 	 	 		 														V
	35007249	396	 	 	 	 	 		 	 	 	 	 		 							V	V	V	V	V			
	35007289	E6C	 	 	 	 	 		 	 	 	 	 		 			V	V	V									
	35006487	FEA	 	 	 	 	 		 	 	 	 	 		 									V	V				V
	35006630	FEA	 	 	 	 	 		 	 	 	 	 		 									V	V				V
	35007210	FEA	 	 	 										V	V

Ça c'est ok mais si je sort le Gr (sous-groupe) du cube et que je fais un maitre alors je perd les journées où je n'ai pas d'absences...


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
	205														
 
	No. employé	Gr	12/23	12/24	12-25		12/26	12/27	12/28	12/29	12/30	12/31			
	35006628										V	V			
	35006675						V	V	V						
	35008143		V	V	V										
	35008366							V	V	V					
 
	396														
 
	No. employé	Gr	12/24	12/25	12-26		12/27	12/28	12/31						
	35005229		V	V	V		V	V	V						
	35005230		V	V	V		V	V	V						
	35005315		V	V	V		V	V	V
	35006386								V
	35007249		V	V	V		V	V	
 
	E6C								
 
	No. employé	Gr	12/20	12/21	12-22				
	35007289		V	V	V

en espérant que c'est clair, des fois je me perds dans mes explications....
et ça ce n'est pas québécois, c'est typiquement féminin !

merciiiiiiiiiiiiiiiiiiiiiiiiiiii
Hélène
jomphh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2007, 17h01   #8
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 181
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 181
Points : 2 717
Points : 2 717
Ma chère Hélène,
Pour avoir tous les jours pour tous les individus, il te faut faire un produit cartésien de CALENDRIER.DATE_CAL avec VP_EMPLOYEEV42.PERSONNUM
c'est à dire sans jointure !
Code :
1
2
3
(SELECT 
VP_EMPLOYEEV42.PERSONNUM || '-'||to_char(CALENDRIER.DATE_CAL,'yyyymmdd') AS MalisteID, CALENDRIER.DATE_CAL ,VP_EMPLOYEEV42.PERSONNUM
FROM CALENDRIER, VP_EMPLOYEEV42 AS Ma ListeJoursPers
ENSUITE TU FAIS LA MËME CHOSE DANS WFCTOTAL
Code :
1
2
3
4
5
(SELECT 
WFCTOTAL.EMPLOYEEID ||'-' || WFCTOTAL.APPLYDTM AS MaListeID,
 les autres champs ....
FROM 
WFCTOTAL ) AS NEWWFCTOTAL
ensuite tu branche le reste du sql sur l'identifiant unique
Code :
1
2
3
4
5
6
7
8
 
SELECT ....
FROM 
Ma ListeJoursPers,
NEWWFCTOTAL,
AUTRES TABLES
WHERE Ma ListeJoursPers.MalisteID = NEWWFCTOTAL.MaListeID(+) 
Autres jointures
courage !
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2007, 20h20   #9
Candidat au titre de Membre du Club
 
Inscription : octobre 2007
Messages : 48
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 48
Points : 10
Points : 10
Mon cher Bruno,

J'connais pas le temps alloué sur ce forum mais yé pas ben long. J'avais ma réponse d'écrite et juste le temps de répondre à un appel téléphonique que oups on est déconnecté ...

comme je te disais oh! et puis merde je recommencerai pas mon histoire la fin est que: talam... ça fonctionne !

mais sans mon histoire j'ai l'air d'une gourde

Fin du feuilleton !

À quand notre best-sellers ?
ça, ça devrait durer un bon p'tit bout.

A+
Hélène

P.S. Il faudrait mettre la discussion à résolu ?
jomphh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2007, 22h47   #10
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 181
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 181
Points : 2 717
Points : 2 717
Bonsoir,

La charge de travail de ce lundi ne m'a pas laissé le loisir de fignoler ma réponse. Je n'ai pas pu tester ni vérifier ma proposition de SQL. Même si mon idée était claire dans ma tête j'ai du le rédiger à l'arrache ... mais j'avais pas le choix.
content que ça ait marché.
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2007, 04h05   #11
Candidat au titre de Membre du Club
 
Inscription : octobre 2007
Messages : 48
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 48
Points : 10
Points : 10
Bonsoir,

Il y a encore un petit problème, je t'expliquerai en détail demain au travail.

au plaisir,
Hélène

P.S. Bruno, tu n'es pas obligé de justifier ton temps réponse !
jomphh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2007, 11h43   #12
Inactif
 
Avatar de Aitone
 
Inscription : novembre 2006
Messages : 3 569
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 3 569
Points : 3 291
Points : 3 291
Citation:
Envoyé par jomphh Voir le message
P.S. Il faudrait mettre la discussion à résolu ?
Si l'autre problème est différent, il faut mettre celle-ci en Résolu et en ouvrir une autre

Aitone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2007, 13h03   #13
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 181
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 181
Points : 2 717
Points : 2 717
Par défaut 1 problème = 1 sujet

Absolument d'accord....
Chaque sujet différent doit être repérable dans l'intitulé du message.
C'est plus sympa pour ceux qui consultent.

"Ne négligeons pas le fait que nous pouvons peut être nous améliorer autrement que par inadvertance"
Achile Talon - Philosophe
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2007, 15h01   #14
Candidat au titre de Membre du Club
 
Inscription : octobre 2007
Messages : 48
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 48
Points : 10
Points : 10
Hum... à mon avis nous sommes toujours dans le même sujet ...
cependant il y a eu évolution et forcément la suite peut sembler faire partie d'un autre problème, mais le besoin à la base reste le même... et, lui, il n'est pas encore comblé. <-----pas pire hein !

À bien y penser, si on se fie au titre «Afficher un calendrier» alors là ,oui, c'est résolu... mais si j'ouvre une nouvelle discussion j'appelle ça comment ???? "ÉVOLUTION D'UN PROBLÈME D'AFFICHAGE DE CALENDRIER "l

Il ne reste qu'un petit pépin.

Dans mon cube tout est beau, j'ai réussi à mettre mon sous-groupe en maître du rapport et j'ai toutes les dates pour tous les employés et ceux qui ont des absences on le champs codes comblés.

Si j'essaie de mettre mon tableau en tableau croisé, les employés qui ont des absences sont dupliqués (j'ai toutes mes dates), la première ligne avec les absences vis à vis les bonmnes dates et la deuxième ligne rien vis-à vis toutes les dates.

Ex:1 Les transactions sont format tableau et ne sont pas doublées.

Ab_tableau.pdf

Ex:2 Les transactions sont format tableau croisé et ceux qui ont des absences sont doublées.

Ab_tableau_croisé.pdf

Bizarre

pendant que tu te creuses les méninges Bruno, je

au plaisir,
Hélène
jomphh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2007, 16h15   #15
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 181
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 181
Points : 2 717
Points : 2 717
Ma Chère Hélène,

Merci pour ton avis.
Mais je suis sûr que tu ne verras pas d'inconvénient à ouvrir un autre sujet comme nous te l'avons demandé le modérateur du plus BO des forums et moi (non ! Pas le plus môche du Forum ! Juste avant dernier)


Tu pourrais intituler ce nouveau sujet : (En rappelant ta version)
[B.O. 6.5] Lignes duppliquées dans un tableau croisé
par exemple.
Sujet qui na rien à voir avec les problèmes SQL précédents
et qui pourrait en captiver plus d'un.

D'avance Merci de nous aider à maintenir un Forum clair et lisible
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2007, 16h43   #16
Candidat au titre de Membre du Club
 
Inscription : octobre 2007
Messages : 48
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 48
Points : 10
Points : 10
OK j'abdique...

Je vais me plier aux maîtres de ces lieux
jomphh 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 10h50.


 
 
 
 
Partenaires

Hébergement Web