|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : juin 2006 Messages : 55 ![]() |
bonjour,
j'ai une requete BO 6.5 avec 3 objets (2 dimensions, 1 indicateur) , j'ai en résultat un tableau croisé : 200711 200712 Variation toto1 13945 17870 toto2 253439 355295 toto3 1225 2335 Dans la derniere colonne je voudrais faire un calcul de variation entre les valeurs des 2 mois pour chaque "toto". Comment faire sous BO ?? Webi ? (6.5) Merci !! |
|
|
00
|
|
|
#2 |
|
Invité régulier
![]() Inscription : juin 2006 Messages : 55 ![]() |
je précise :
Dans mon rapport il n'y a toujours que 2 mois cependant ces 2 mois sont variables car réponse à une invite. Dans la colonne "Varioation" que j'ai créée je voudrais donc voir ces résultats : 3925 (=17870 - 13945) 101856 (=355295 - 253439) 1110 (=2335 - 1225) Quelle serait la définition d'une telle varible ? Merci de votre aide !! |
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Inscription : juillet 2005 Messages : 175 ![]() |
Bonjour,
est-ce qu'une variable de type indicateur =<Mois2>-<Mois1> ne répond pas à ton besoin ? |
|
|
00
|
|
|
#4 |
|
Invité régulier
![]() Inscription : juin 2006 Messages : 55 ![]() |
qu'entends tu par <Mois1> et <Mois2> ?
je n'ai qu'un seul indicateur dans ma requete : <Ventes> et j'ai 2 dimensions <Client> et <Mois>. <Client> vaut toto1, toto2 etc <Mois> vaut 200712, 200801 etc Je suis sur un tabelau croisé, je ne peux pas utiliser la formule BO "a-b" car mes données mois ne sont pas fixes mais en réponses d'une invite |
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : février 2008 Messages : 32 ![]() |
utilise la fonction "Réponse Utilisateur":
Variation = (Ventes Où Réponse première Invite) - (Ventes Où Réponse deuxième Invite) |
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : juin 2006 Messages : 55 ![]() |
Désolé, j'ai essayé mais ça en fonctionne pas.
J'ai déja l'erreur DMB0007 si je crée la variable : VAR1=<Ventes> Où (<Mois>=RéponseUtilisateur ("R1" , "Mois des ventes (aaaamm) ?")) par contre, pas d'erreur si je mets la réponse en "dur" : VAR1=<Ventes> Où (<Mois>="200801") ...mais je ne peux pas mettre 200801 en "dur" vu que j'ai une invite ! ... je ne m'en sors pas .... En BO C/S j'ai trouvé une parade en créant 2 requetes liées, mais là je suis en Webi !! comment faire sous Webi 6.5 ??? |
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : février 2008 Messages : 32 ![]() |
et si tu crées d'abord la variable indicateur "Réponse Invite 1" tya tjrs l'erreur ?
|
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Inscription : juin 2006 Messages : 55 ![]() |
oui j'ai tout de meme l'erreur.
Je dirais meme plus : j'ai aussi l'erreur si je crée tout simplement une variable VAR2="200801" !! => OK pour VAR1=<Ventes> Où (<Mois>="200801") mais KO pour VAR1=<Ventes> Où (<Mois>=<VAR2>) => erreur DMB0007 A savoir que <Mois>, et <VAR2> sont tous les 2 de meme type : <Mois> en alphanumerique car la donnée source est en VARCHAR2 et <VAR2> défini en chaine de caracteres. A croire que le "Où" fonctionne avec une variable mais pas 2 ! Est ce faisable en Webi 6.5 ce que je demande ? C'est pourtant quelque chose de tout à fait basique non ? |
|
|
00
|
|
|
#9 | |
|
Membre régulier
![]() Inscription : décembre 2003 Messages : 96 ![]() |
T'as variable <Mois> c'est une variable date ou alphanumerique.
Si c'est une date il faut caster la RéponseUtilisateur en Date, pour ça il existe la fonction EnDate. Citation:
|
|
|
|
00
|
|
|
#10 |
|
Invité régulier
![]() Inscription : juin 2006 Messages : 55 ![]() |
<Mois> est en alphanum tout comme la VAR2 citée dans mon post précédent, tout comme RéponseUtilisateur.
J'ai l'impression que le "Où" ne veut pas en opérande une variable ! Mais la doc BO ne dit rien là dessus, mais tous les exemples que j'ai pu trouvés pour la fonction "Où" sont avec en opérande une valeur fixe et non une variable ... Exact ? Une autre possibilité sans utiliser le "Où" ?? |
|
|
00
|
|
|
#11 |
|
Membre régulier
![]() Inscription : décembre 2003 Messages : 96 ![]() |
C'est exacte, il me semble que ça ne fonctionne qu'avec une constante, j'avais rencontré le même problème mais je ne me souviens plus comment je l'ai réglé.
|
|
|
00
|
|
|
#12 |
|
Membre du Club
![]() |
Bonjour,
As-tu testé cela ? VENTES WHERE (MONTH=[MOIS1]) - VENTES WHERE (MONTH=[MOIS2]) En sachant que MOIS1 est une variable information qui reprend la réponse d'une invite, =RéponseUtilisateur([MOIS1]) MOIS2 est aussi une variable information qui reprend la réponse d'une invite, =RéponseUtilisateur([MOIS2]) J'utilise toujours cette méthode qui fonctionne dans mes rapports |
|
|
00
|
|
|
#13 | |||
![]() ![]() Bruno ROMAN-RUIZ Inscription : décembre 2006 Messages : 2 185 ![]() |
Citation:
Les écarts et variations de BO sont certes séduisant au moment de la mise en oeuvre mais lorsque le tableau croisé évolue ... bonjour l'angoisse ! Le plus simple pour faire un tableau croisé doté de variations évolutives ... c'est de ne pas faire de tableau croisé ! Faire 2 requêtes distinctes R1 Objets Totos & Indicateur Condition Annéemois = Invite Quelle période AAAAMM ? R2 Objets Totos & Indicateur Condition Annéemois = Invite Quelle période AAAAMM-1 ? (On pourrais bien sûr déduire Période AAAAMM-1 de Période AAAAMM mais ça compliquerais le sujet immédiat) Synchroniser les deux requêtes en liant la Dimension commune Totos
Code :
Totos <M-1> <M> <Ecart> <Variation> Cela dit il faut essayer aussi la proposition de nat54
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!" |
|||
|
|
00
|
|
|
#14 |
|
Invité régulier
![]() Inscription : juin 2006 Messages : 55 ![]() |
nat54,
Sous quelle version de BO es tu ? car désolé mais je ne peux pas faire ce que tu dis faire. De mon côté je suis en BO et Webi 6.5 SP2 et mon "Où" (ton "Where") veut bien prendre un objet et une constante mais pas 2 variables. D'ailleurs, sous webi 6.5, le "Où" n'existe meme pas ... bruno2r, oui, la solution que tu décris est celle que j'ai implémentée (cf un de mes posts précédents) mais mon but est de savoir s'il est possible de réaliser ce simple calcul de variation à partir d'une seule requete ... voire sous Webi (mais là, sous Webi 6.5, je reve). |
|
|
00
|
|
|
#15 |
|
Membre actif
![]() Inscription : février 2008 Messages : 129 ![]() |
Si tu souhaites travailler sous forme de tableau croise avec 1 seule requete, tu peux
1)créer la variable suivante : = Si Non EstNul(Précédent(<indicateur>)) Alors (<indicateur>-Précédent(<indicateur>))/Précédent(<indicateur>) 2)creer une colonne dans ton tableau et glisser la variable dedans 3) présenter cette colonne en format % cependant, tu auras une colonne vide (c'est pas top) ! pour ma part, je préfère la solution 2 requetes |
|
|
00
|
|
|
#16 | |
|
Membre du Club
![]() |
Citation:
Tu as crée tes variables information ?? un exemple de chez moi =[Total deal order value Eur-ext]Where([Month ID ( YYYYMM )]=[Mois_M])-[Total deal order value Eur-ext]Where([Month ID ( YYYYMM )]=[Mois_M-1]) [Mois_M] =RéponseUtilisateur("M") >> invite au lancement de la requête [Mois_M-1]) =RéponseUtilisateur("M-1") >> invite au lancement de la requête |
|
|
|
00
|
|
|
#17 |
|
Invité régulier
![]() Inscription : juin 2006 Messages : 55 ![]() |
merci de tes infos nat54, mais tu es en webi XI, cela change tout !
je ne suis encore qu'en webi 6.5, mon BO en est au XXieme siecle et non encore au XXI ieme. |
|
|
00
|
|
|
#18 |
|
Invité de passage
![]() Inscription : juillet 2008 Messages : 1 ![]() |
C'est un problème épineux mais il y a une solution sans passer par deux requêtes :
Si tu as un tableau croisé à deux colonnes, ici <mois> avec deux valeurs mois1 et mois2 Imaginons que ton tableau ait deux dimensions <client> et <ville> et 1 indicateur <vente> 1) Créer une première variable : <variation> = 2) créer une deuxième variable : Code :
<variation vente> = Somme(<variation>)dans(<client>,<ville>,<mois>) L'astuce réside dans le fait que la fonction "dans" n'a pas d'ORDER BY défini. Par défaut BO va utiliser le bloc similaire déjà présent dans le rapport. Du coup la fonction "précédent" non native du contenu du tableau croisé ne va pas créer de colonne vide cette fois. |
|
|
00
|
|
|
#19 |
|
Membre actif
![]() Inscription : juillet 2008 Messages : 181 ![]() |
Bonjour,
Je vous propose de mettre la formule suivante dans la colonne variation: =Somme(Abs((([indicateur])-([indicateur] PourTout ([Mois]))/2) ) PourChaque([Mois])) A quoi cela correspond? prenons l'exemple toto1 13945 17870 Pour chaque mois, on fait - pour 200711 on va calculer [indicateur] - ([indicateur] PourTout ([Mois]))/2 soit 13945 - (13945+17870)/2 = 13945 - 15908 (qui est la moyenne) = -1963 - idem pour 200712 on trouve 1962 En fait on cherche la différence entre chaque mois et la moyenne On prends ensuite la valeur absolue de ces deux valeurs qu'on ajoute ensuite 1963+1963 = 3925 qui est bien égal à 17870 - 13945 2 inconvénients importants à noter - Cette formule ne permet pas de savoir si c'est une augmention ou une baisse. - Autre soucis avec cette formule: si une des deux valeurs n'est pas renseignée, le calcul de la variation est fausse. toto1 13495 vide donne une variation de 6972 Je fais encore des tests pour améliorer cela. |
|
|
00
|
|
|
#20 | |
|
Invité régulier
![]() Raoudi Développeur informatique Inscription : octobre 2005 Messages : 41 ![]() |
Citation:
Bonjour, Ok pour la solution à 2 requêtes. Elle fonctionne bien sur 2 années. Mais je rencontre ce genre de problème avec un tableau pouvant avoir jusque 15 années d'historique. Cordialement |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com