|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : avril 2007 Messages : 7 ![]() |
Hello hello
J'ai un tableau avec différentes valeurs, le maître du rapport étant la date au format jj/mm/aa. J'obtiens donc mes tableaux par jour toussa, bref, vous voyez le truc. Maintenant, pour chaque tableau, je dois rajouter une colonne 'ancienneté'. Pour chacune des lignes des tableaux, j'ai une sorte de "clé primaire". Je dois ainsi regarder si une ligne d'un tableau n'était pas déjà présente la veille, et si c'est le cas, récupérer l'ancienneté de cette ligne et faire +1. Autrement, l'ancienneté vaut 0 (et l'ancienneté de toutes les lignes du premier tableau vaudra ainsi 0). Exemple : 01/04/2007 ID - Desc - Ancienneté 1 - aaa - 0 2 - bbb - 0 3 - ccc - 0 02/04/2007 1 - aaa - 1 2 - bbb - 1 4 - ddd - 0 03/04/2007 2 - bbb - 2 0 - ccc - 0 04/04/2007 1 - aaa - 0 2 - bbb - 3 0 - ccc - 1 Donc : quelle formule appliquer dans la colonne "Ancienneté" ? Ai-je besoin de créer une dimension/une information ? Merci d'avance ! |
|
|
00
|
|
|
#2 |
|
Nouveau Membre du Club
![]() Inscription : février 2007 Messages : 34 ![]() |
Bonjour
Peut la fonction précédent bon courage jean marie |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : avril 2007 Messages : 7 ![]() |
Hmmm.. précédent, ca semble être pour récupérer la case précédente, mais dans le même tableau.
Moi, ce dont j'ai besoin, c'est de voir si 1/ l'id était présent dans le tableau du jour précédent 2/ récupérer l'ancienneté de cet Id + 1 Et d'autre part, d'avoir une formule =If... quelque chose (enfin je suppose), qui fasse que : 1/ Lors du premier jour, ancienneté=0 2/ Si Id n'appartient pas au tableau à j-1, ancienneté=0 3/ Si Id appartient au tableau à j-1, ancienneté=ancienneté(j-1) + 1 |
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Inscription : mars 2006 Messages : 111 ![]() |
Salut
Il y aurait une possibilité en créant une fonction sous PL/SQL ou TRANSACT/SQL auquel tu passes une date et un ID. Dans ta fonction, tu recherches le même ID pour la date J-1 Ensuite, tu fais appel à cette fonction dans un nouvel objet de format numérique: Ancienneté SELECT F_CALCULE_ANCIENNETE ( date, ID) Sans B.O. je ne vois que cela En espérant t'avoir aidé Frédéric_S |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : avril 2007 Messages : 7 ![]() |
Bah, le truc, c'est que l'ancienneté est calculée dans le rapport, dynamiquement. Ce que tu me proposes, ca va permettre juste de voir si l'id était déjà présent la veille, et donc de mettre "1" dans la case, mais il faudrait en plus que je recupere la valeur de la case ancienneté de la veille, et que je fasse +1 dessus...
Si je trouve un id 10 jours de suite, j'ai besoin qu'il ait au 11eme jour une ancienneté de 10. Enfin, peut-être que je me trompe, en tout cas je comprends pas comment je peux y arriver avec ta méthode ? Je me demandais par contre si c'était pas jouable avec un ptit bout de code en VBA... qui va chercher dans la veille le champ ancienneté pour un id, sinon qui met 0 dans la colonne Je mets en annexe le fichier xls que donne pour le moment le document DeskI. Colonne Id = <Id> Colonne Note Moy. = <Note Moy.> (indicateur) Colonne Ancienneté = que dalle Edit : après reflexion je vais essayer de faire mon truc "à la main", disons de creer une table calque de la mienne, et d'automatiser les calculs d'une maniere ou d'une autre (à peu de choses près). Cependant, je reste ouverte à toute solution... c'est toujours intéressant de savoir les différentes manières de faire. |
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Inscription : mars 2006 Messages : 111 ![]() |
Bonjour
Je suis d'accord avec toi mais il faudrait voir pour mettre un Somme( <objet_fonction>). Par contre, n'ayant pas B.O., je ne sais pas comment il réagirait. Normalement, la fonction incrémenterait uniquement si le jour précédent, on a le même id. C'est à tester et à murir. Frédéric |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com