Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Business Objects > Designer
Designer Forum d'entraide Designer (création d'univers, etc.)
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 17/09/2008, 12h08   #1
Membre du Club
 
Inscription : novembre 2006
Messages : 226
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 226
Points : 44
Points : 44
Par défaut [5] Objet semaines précédentes

Bonjour,

J'aimerais créé un objet dans le designer qui me donne les 5 semaines précédentes (par rapport à un numéro de semaine que l'utilisateur entre comme invite).

Ex:
L'utilisateur répond à l'invite "N° semaine"= 37
et avec l'objet "5 semaines precedentes", j'affiche 36,35,34,33,32.

Vous avez une idée?
(A voir après comment je peux le mettre en place à cheval sur 2 années...)

PS: j'ai oublié de préciser que j'etais sous BO 5 (et oui!)
steinia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 12h34   #2
Membre du Club
 
Inscription : novembre 2006
Messages : 226
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 226
Points : 44
Points : 44
J'ai résolu une partie de mon Pb en faisaint une condition :
BUDE.TB_CALENDRIER.I_NO_SEM between @Prompt('Semaine?','N',,BUDE.TB_CALENDRIER.I_NO_SEM,mono,free)-4 and (@Prompt('Semaine?','N',,BUDE.TB_CALENDRIER.I_NO_SEM,mono,free) )


PAr contre je ne sais pas comment je peux jongler sur 2 années...
steinia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2008, 08h08   #3
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 185
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 185
Points : 2 724
Points : 2 724
Bonjour,
On va peut être essayer de faire plus simple :
Dans Designer : Créer un filtre
Nom : 5 semaines précédantes
Clause Where :
Code :
1
2
3
4
5
TABLE.Date <= (trunc(sysdate,'year') 
+ @Prompt('Numéro de semaine','N',,mono,free) *7) 
AND 
TABLE.Date >=   ((trunc(sysdate,'year') 
+@Prompt('Numéro de semaine','N',,mono,free) *7) -35)
Bien entendu on peut aussi laisser le choix du nombre de semaines en arrière :
Nom : x semaines en arrière
Code :
1
2
3
4
5
6
TABLE.Date <= (trunc(sysdate,'year') 
+ @Prompt('Numéro de semaine','N',,mono,free) *7) 
AND 
TABLE.Date >=   ((trunc(sysdate,'year') 
+ @Prompt('Numéro de semaine','N',,mono,free) *7) 
- (@Prompt('Combien de semaines ?','N',,'mono, free)*7))
Explication :
Etape 1 Calculer la date du 1er jour de l'annéee en cours
Etape 2 Calculer le dernier jour de la semaine choisie par l'utilisateur
1er jour de l'année + (N° de semaine x 7 jours)
Code :
trunc(sysdate,'year')+@Prompt('Numéro de semaine','N',,mono,free) *7)
Etape 3 Trouver la borne inférieure en enlevant à la date de borne supérieure (Nb de semaines * 7 jours)
Code :
1
2
3
((trunc(sysdate,'year') 
+ @Prompt('Numéro de semaine','N',,mono,free) *7) 
- (@Prompt('Combien de semaines ?','N',,'mono, free)*7))
__________________
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 18/09/2008, 10h53   #4
Membre actif
 
Inscription : juillet 2008
Messages : 181
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : juillet 2008
Messages : 181
Points : 169
Points : 169
Citation:
Envoyé par Bruno2r Voir le message
Etape 2 Calculer le dernier jour de la semaine choisie par l'utilisateur
1er jour de l'année + (N° de semaine x 7 jours)
Code :
trunc(sysdate,'year')+@Prompt('Numéro de semaine','N',,mono,free) *7)
Bonjour,

Petit problème que me pose cette solution, si le premier jour de l'année est un mercredi par exemple, on va trouver comme borne supérieure un mercredi et non pas le dimanche de la semaine n° xx. La semaine sera donc incomplète.

Mon idée serait donc de trouver dans un premier temps le dernier jour de la semaine sélectionnée (le dimanche) pour avoir la borne sup et ensuite enlever (5*7+1) jours pour avoir la borne inf (le "+1" c'est pour partir du lundi)

Pistes à peut-être étudier:
- utiliser des fonctions qui nous donne le dernier jour de la semaine sélectionnée. Comme ça, ça ne me vient pas ... En plus je me demande si on va pas avoir besoin de l'année car la semaine 14 de 2007, ça doit pas être la même que la semaine 14 de 2008!
- utiliser une table de temps
alextoucour est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2008, 22h30   #5
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 185
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 185
Points : 2 724
Points : 2 724
Citation:
Envoyé par alextoucour Voir le message
Bonjour,

Petit problème que me pose cette solution, si le premier jour de l'année est un mercredi par exemple, on va trouver comme borne supérieure un mercredi et non pas le dimanche de la semaine n° xx. La semaine sera donc incomplète.

Mon idée serait donc de trouver dans un premier temps le dernier jour de la semaine sélectionnée (le dimanche) pour avoir la borne sup et ensuite enlever (5*7+1) jours pour avoir la borne inf (le "+1" c'est pour partir du lundi)
.......
- utiliser une table de temps
Remarque tout à fait pertinente.
Il faut que steinia nous dise si où il fait commencer la première semaine de 2008 (sachant que BO n'est pas fiable la dessu, je lui conseille plutôt de se référer à un calendrier)
En fonction de sa réponse, on substituera à la date du premier jour de l'année la date du premier jour de la première semaine.
On t'écoute.
__________________
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/09/2008, 09h47   #6
Membre actif
 
Inscription : juillet 2008
Messages : 181
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : juillet 2008
Messages : 181
Points : 169
Points : 169
Citation:
Envoyé par alextoucour Voir le message
... ensuite enlever (5*7+1) jours pour avoir la borne inf (le "+1" c'est pour partir du lundi)
Me suis planté: si on "enlève", c'est (5*7-1) ou sinon on "enlève" 5*7 jours et on prend le jour d'après (+1). Mais pas en même temps!
alextoucour est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2008, 16h22   #7
Membre du Club
 
Inscription : novembre 2006
Messages : 226
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 226
Points : 44
Points : 44
Merci pour vos reponses, ca me donne des pistes.
Oui il faut que je commence sur une semaine entiere : du lundi au dimanche.
steinia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2008, 16h35   #8
Membre du Club
 
Inscription : novembre 2006
Messages : 226
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 226
Points : 44
Points : 44
J'aurais juste un pb si je fais ce filtre.
Car ds la requete BO, je vais par ex mettre Semaine 29 de l'année 2008 (car j'ai plusieurs années d'historique).

Ce qui donne un filtre : Annee=2008 et semaine=29 => la ca fonctionne.

Mais si je mets Annee=2008 et semaine=1 => La je n'aurais que la premiere semaine 2008 et non pas les 4 dernières semaine de 2007...
steinia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2008, 19h59   #9
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 185
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 185
Points : 2 724
Points : 2 724
Citation:
Envoyé par steinia Voir le message
J'aurais juste un pb si je fais ce filtre.
Car ds la requete BO, je vais par ex mettre Semaine 29 de l'année 2008 (car j'ai plusieurs années d'historique).

Ce qui donne un filtre : Annee=2008 et semaine=29 => la ca fonctionne.

Mais si je mets Annee=2008 et semaine=1 => La je n'aurais que la premiere semaine 2008 et non pas les 4 dernières semaine de 2007...
Bien sûr que si !
Je l'ai testé avec semaine = 2 et nombre de semaines = 5
J'ai pris le parti de considérer que la semaine se choisissait sur l'année de la date system.
On peut tout à fait concevoir d'ajouter une invite pour l'année
On aurait ainsi trois invites :
  • Quelle semaine ?
  • De quelle Année ?
  • Combien de semaines en arrière ?
Pour ce qui est du départ de semaine le lundi, et si tu veux dire que la date de début de la première semaine de l'année est la date du premier lundi de l'année, donc le 07/01/2008, il suffit de remplacer la date du premier jour de l'année par la date du premier lundi de l'année qui est égale à :
1er jour de l'année + (7 - jour de semaine du 31/12/N-1)
Code :
1
2
trunc(sysdate,'year')+(7-to_char(trunc(sysdate,'year')-1,'d'))
En ajoutant (7jours x numéro de semaine fournie en invite)
on obtiendra la date du dernier jour de la semaine voulue comme borne 2

Allez résumons ...1ère condition :
Code :
1
2
3
4
5
6
TABLE.Date <= 
(
trunc(sysdate,'year') + 
(7 - to_char(trunc(sysdate,'year') -1,'d')
) 
+ @Prompt('Quelle semaine ?','N',,mono,free) *7)
2ème condition :
Code :
1
2
3
4
5
6
7
8
9
10
11
 
AND 
 
TABLE.Date >=   
(
(trunc(sysdate,'year') + 
(7-to_char(trunc(sysdate,'year')-1,'d')
)
+ @Prompt('Quelle semaine ?','N',,mono,free) *7) 
- (@Prompt('Combien de semaines en arrière ?','N',,'mono, free)*7)
)
et avec trois invite ...
1ère condition :
Code :
1
2
3
4
5
6
7
8
9
TABLE.Date <= 
(
trunc(to_date(@Prompt('Année ?','A',,mono,free),'yyyy'),'year') + 
(7 - 
to_char(
trunc(to_date(@Prompt('Année ?','A',,mono,free),'yyyy'),'year') 
-1, 'd')
) 
+ @Prompt('Numéro de semaine','N',,mono,free) *7)
2ème condition :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
AND 
 
TABLE.Date >=   
(
(trunc(to_date(@Prompt('Année ?','A',,mono,free),'yyyy'),'year')
 + 
(
7 
- to_char(
trunc(to_date(@Prompt('Année ?','A',,mono,free),'yyyy'),'year'))-1,'d')
)
+ @Prompt('Numéro de semaine','N',,mono,free)*7) 
- (@Prompt('Combien de semaines ?','N',,'mono, free)*7))
Soyons fou

Précision importante : La complexité de cette solution est imposée par la Version 5 .
Dans les versions suivantes il faut utiliser une Table dérivée qui produise les dates à retenir et la joindre par une jointure simple à la table de faits.
__________________
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 22/09/2008, 12h21   #10
Membre du Club
 
Inscription : novembre 2006
Messages : 226
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 226
Points : 44
Points : 44
bon bah je n'arrive pas a obtenir le bon résultat parce que du coup, si je demande la semaine 29, j'obtiens les semaines : 26,27,28,29,30,31.
alors que j'aimerais impérativement que ça s'arrête à la semaine 29 (complète) et je veux les semaines précédentes c'est à dire : 25,26,27,28,29 en tout.

En fait, c'est la 1ere semaine ds ce cas là qui gène...car elle les décale.
steinia 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 06h00.


 
 
 
 
Partenaires

Hébergement Web