|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Étudiant Inscription : mai 2007 Messages : 45 ![]() |
Bonjour j'ai BO6.5, j'aimerais savoir est ce que c possible de faire un indicateur dans designer qui soustrait une date pour deux conditions différentes
Merci |
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Inscription : septembre 2006 Messages : 815 ![]() |
exemple STP ?
|
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Étudiant Inscription : mai 2007 Messages : 45 ![]() |
En fait il s'agit d'un seul et même objet "date" que je voulais scinder en deux pour 2 conditions :
date1 pour l'activité 1 date 2 pour l'activité 2 Je veux savoir tout simplement le temps écoulé entre l'activité 1 et 2 ? |
|
|
00
|
|
|
#4 |
|
Membre régulier
![]() Inscription : juillet 2007 Messages : 87 ![]() |
Il nous faut savoir sur quelle règle tu te bases pour identifier Activité1 et Activité2.
Et puis dis-nous également quel SGBD tu utilises... |
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Étudiant Inscription : mai 2007 Messages : 45 ![]() |
En fait je sais que c'est pas lié au SGBD (ORACLE 9i).
Et les activités c'est un deuxième objet , plus clairement: Cas Date Activité 001 01/09/07 13:12:45 1 001 02/09/07 09:00:00 6 001 05/09/07 12:30:56 2 002 003 . . . Je veux savoir le temps moyen en jours et en heures que passe chaque cas entre l'activité 1 et 2 ? |
|
|
00
|
|
|
#6 |
|
Membre régulier
![]() Inscription : juillet 2007 Messages : 87 ![]() |
SI je comprends bien et si c'est toujours entre 1 et 2, la solution n'est pas dans Designer mais dans Reporter.
Tu pourrais faire une rupture par cas et dans le pied de rupture faire une formule du genre =JoursEntre(Max(Date) où (Activité=1),Max(Date) où (Activité=2)) et à la fin de ton tableau faire la moyenne de cette formule. Cela te donnera le nombre de jours moyen. Je ne garantis pas la syntaxe exacte, je n'ai pas BO sous la main... |
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Étudiant Inscription : mai 2007 Messages : 45 ![]() |
Je te remercie beaucoup.
En fait j'avais essayé cette solution mais sans le "Max" et j'avais toujours une erreur. Maintenant, le JoursEntre me donne l'écart en jour. Je veux l'écart en heures aussi. |
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Étudiant Inscription : mai 2007 Messages : 45 ![]() |
Je veux savoir si dans la version 6 de BO, il y a moyen d'obtenir un écart de date en heures????
Par exemple : 16/09/2007 21:00:00 17/09/2007 09:00:00 L'écart est de : 12 Heures (et non pas 1 jour) Je ne vois pas de fonction prédéfinie pour cela (JoursEntre : écart en jours) |
|
|
00
|
|
|
#9 |
|
Invité régulier
![]() Étudiant Inscription : mai 2007 Messages : 45 ![]() |
Pourquoi ça ne marche pas avec Decode.
J'ai fait dans designer un objet décrit comme suit : decode(WF_ACTIVITY_LOG.ACTIVITY_ID,'ACT-477',to_date(WF_ACTIVITY_LOG.DATE_CREATED,'DD-MM-YYYY HH24 :MI:SS'),null)-decode(WF_ACTIVITY_LOG.ACTIVITY_ID,'ACT-244',to_date(WF_ACTIVITY_LOG.DATE_CREATED,'DD-MM-YYYY HH24 :MI:SS'),null) L'analyse est réussi de cet objet. Mais dans Business Object il me donne erreur dans le SQL Pourquoi? |
|
|
00
|
|
|
#10 | |
![]() ![]() Bruno ROMAN-RUIZ Inscription : décembre 2006 Messages : 2 181 ![]() |
Citation:
Erreur de frappe dans le nommage de deux champs differents ou bien deux dates sur deux enregistrements différents identifiables par WF_ACTIVITY_LOG.ACTIVITY_ID ? |
|
|
|
00
|
|
|
#11 |
|
Invité régulier
![]() Étudiant Inscription : mai 2007 Messages : 45 ![]() |
Merci pour m'avoir répondu,
Il y a deux enregistrements: La date de création de l'activité ACT-477 et la date de création de l'activité ACT-244. L'objet créé est une soustraction de ces deux dates mais je n'arrive pas à l'exécuter. |
|
|
00
|
|
|
#12 |
![]() ![]() Bruno ROMAN-RUIZ Inscription : décembre 2006 Messages : 2 181 ![]() |
C'est bien ce que je pensais 2 enregistrements et non pas 2 champs
Ne sachant pas à quel DonnéeID se rapportent ces dates je vais supposer qu'il sagit des dates de ID Soit une table A listant ces ID et une table B contenant au moins 2 champs : ID et WF_ACTIVITY_LOG.ACTIVITY_ID Tu pourrais créer deux jointures de A ver B1 C'est à dire de A vers B et de a vers B2 (Alias) Pourquoi ? Parce que A1 comportera une jointure restrictive WF_ACTIVITY_LOG.ACTIVITY_ID = 'ACT-244', et A2 une jointure restrictive WF_ACTIVITY_LOG.ACTIVITY_ID = 'ACT-244', en reliant A.ID=B1.ID(+) ET A.ID=B2.ID(+) Tu pourras créer ta formule. |
|
|
00
|
|
|
#13 |
|
Invité régulier
![]() Étudiant Inscription : mai 2007 Messages : 45 ![]() |
Excuse moi, mais je n'ai pas très bien compris.
Comme on est arrivé là, j'aimerais t'expliquer mieux: En fait j'ai toutes les données dans la même table WF_ACTIVITY_ID, Ok. Cette table contient le champ ID, Date_Created, Activity_ID et d'autres champs. Je veux calculer pour chaque ID, le temps écoulé entre l'activité ACT-477 et ACT-244 Je n'ai pas compris pourquoi, je dois faire des jointure pour pouvoir établir la formule? |
|
|
00
|
|
|
#14 | ||||
![]() ![]() Bruno ROMAN-RUIZ Inscription : décembre 2006 Messages : 2 181 ![]() |
Comme les dates que tu veux calculer le temps écoulé entre l'activité ACT-477 et ACT-244 qui correspondent à deux enregistrements distincts !!! tu ne peux pas.
Donc tu garde dans ton univers ta table WF_ACTIVITY_ID puisqu'elle contient d'autres champs dont tu peux avoir besoin pour d'autres objets. 1) Dans le Menu Insertion tu choisis Tables Dérivées 2) Tu tapes le SQL suivant : Code :
4) Tu crées une jointure externe entre la table WF_ACTIVITY_ID et la table Dérivée ACT_477 5) Dans le Menu Insertion tu choisis Tables Dérivées 6) Tu tapes le SQL suivant : Code :
8) Tu crées une jointure externe entre la table WF_ACTIVITY_ID et la table Dérivée ACT_244 9) Maintenant tu peux créer 3 objets DateHeureACT-244 Select: ACT_244.Date_Created DateHeureACT-477 Select: ACT_477.Date_Created Durée Select: decode(ACT_477.Date_Created, NULL,NULL,decode(ACT_244.Date_Created,NULL,NULL, ACT_477 - ACT_244)) Tu devrais essayer et me dire .... |
||||
|
|
00
|
|
|
#15 |
|
Invité régulier
![]() Étudiant Inscription : mai 2007 Messages : 45 ![]() |
J'ai essayé les tables dérivées mais j'ai des doublons.
Par exemple : Pour ID j'ai 2 dates D1, D2 pour ACT-477 et 2 dates de création T1, T2 pour ACT-244. (Le parcours entre l'activité ACT-477 et ACT-244 a été effectué 2 fois : D1->T1 et D2->T2) En suivant à la lettre ce que tu m'as recommandé j'ai : ID D1 T1 (T1-D1) (Bon) ID D1 T2 (T2-D1) (Non voulu) ID D2 T1 (T1-D2) (Non voulu) ID D2 T2 (T2-D2) (Bon) Même avec les jointures restrictives j'ai le même problème. |
|
|
00
|
|
|
#16 | ||
![]() ![]() Bruno ROMAN-RUIZ Inscription : décembre 2006 Messages : 2 181 ![]() |
Ca tu ne nous l'avais pas dit que tu pouvait avoir deux dates D1 D2 pour un même ID
ID ne peut donc suffire comme identifiant UNIQUE ! il te faut donc trouver un champ de plus qui concaténé avec ID permettra une jointure sans doublons vers les deux tables dérivées (dans lesquelles tu dois également ajouter ce champ concaténé. Exemple si tu as un champ Numéro sorte de numéro qui permet pour un ID de différencier les Activités. Tu dois ajouter dans les tables dérivées Code :
Code :
WF_ACTIVITY_ID.ID || to_char(WF_ACTIVITY_ID.Numéro,'0') = ACT_477.MonID(+) |
||
|
|
00
|
|
|
#17 |
|
Invité régulier
![]() Étudiant Inscription : mai 2007 Messages : 45 ![]() |
Je te remercie beaucoup BRUNO2R pour ton aide.
Mais, Est ce qu'il y a une solution plus simple que concaténer l'ID avec une chaine. Ca ne marche dans mon univers. Dans la table en question où j'aimerais calculer cet écart, a comme ID comme PK et activity_ID comme FK. il y a aussi la date de création de l'activité qui permet de différencier les enregistrements. Est ce que ça peut marcher avec des alias même si je crois que ça va être la même histoire(des doublons...) |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com