Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
J'ai besoin de calculer une colonne disponible lors du chargement.
à ce stade j'ai Les colonnes suivantes : Case Number,DATE,PAIEMENT , COST , REVERSE
La colonne Balance = PAIEMENT - COST - REVERSE
Je coince pour calculer la colonne Disponible qui devrait correspondre au calcul suivant :
Balance du jour + Disponible de la veille (le Disponible de la veille peut être négative).
Voici le résultat que je voudrais obtenir :
Si je prend l'exemple de la ligne du 30/01/2018, je veux faire le calcul suivant : 9,96 + -261.60 = 254,64
quelqu'un aurait une idée ??
Case Number | DATE | PAIEMENT | COST | REVERSE | Balance | Disponible |
1234048 | 29/12/2017 | 201,60 € | - 201,60 € | - 201,60 € | ||
1234048 | 27/01/2018 | 60,00 € | - 60,00 € | - 261,60 € | ||
1234048 | 30/01/2018 | 10,00 € | 3,04 € | 6,96 € | - 254,64 € | |
1234048 | 23/02/2018 | 10,00 € | 3,04 € | 6,96 € | - 247,68 € | |
1234048 | 29/03/2018 | 10,00 € | 3,04 € | 6,96 € | - 240,72 € | |
1234048 | 09/05/2018 | 10,00 € | 3,04 € | 6,96 € | - 233,76 € | |
1234048 | 02/06/2018 | 10,00 € | 3,04 € | 6,96 € | - 226,80 € | |
1234048 | 28/06/2018 | 10,00 € | 3,04 € | 6,96 € | - 219,84 € | |
1234048 | 25/07/2018 | 10,00 € | 3,04 € | 6,96 € | - 212,88 € | |
1234048 | 28/08/2018 | 10,00 € | 3,04 € | 6,96 € | - 205,92 € | |
1234048 | 28/09/2018 | 10,00 € | 3,04 € | 6,96 € | - 198,96 € | |
1234048 | 01/11/2018 | 10,00 € | 3,04 € | 6,96 € | - 192,00 € | |
1234048 | 18/12/2018 | 20,00 € | 3,04 € | 16,96 € | - 175,04 € | |
1234048 | 21/01/2019 | 10,00 € | 3,11 € | 6,89 € | - 168,15 € | |
1234048 | 23/02/2019 | 10,00 € | 3,11 € | 6,89 € | - 161,26 € | |
1234048 | 22/03/2019 | 10,00 € | 3,11 € | 6,89 € | - 154,37 € | |
1234048 | 20/04/2019 | 10,00 € | 3,11 € | 6,89 € | - 147,48 € | |
1234048 | 22/05/2019 | 10,00 € | 3,11 € | 6,89 € | - 140,59 € | |
1234048 | 24/05/2019 | 5,25 € | - 5,25 € | - 145,84 € | ||
1234048 | 17/06/2019 | 150,00 € | 8,60 € | 141,40 € | - 4,44 € | |
1234048 | 24/07/2019 | 23,56 € | - 23,56 € | - 28,00 € | ||
1234048 | 26/07/2019 | 150,00 € | 10,00 € | 140,00 € | 112,00 € | |
1234048 | 01/09/2019 | 101,75 € | - 101,75 € | 10,25 € | ||
1234048 | 10/09/2019 | 150,00 € | 8,60 € | 141,40 € | 151,65 € | |
1234048 | 01/10/2019 | 50,00 € | - 50,00 € | 101,65 € | ||
1234048 | 16/10/2019 | 150,00 € | 8,60 € | 141,40 € | 243,05 € | |
1234048 | 05/11/2019 | 139,72 € | - 139,72 € | 103,33 € | ||
1234048 | 27/11/2019 | 23,56 € | - 23,56 € | 79,77 € | ||
1234048 | 02/12/2019 | 150,00 € | 8,60 € | 141,40 € | 221,17 € | |
1234048 | 03/12/2019 | 116,42 € | - 116,42 € | 104,75 € | ||
1234048 | 08/01/2020 | 23,73 € | - 23,73 € | 81,02 € | ||
1234048 | 13/01/2020 | 150,00 € | 8,66 € | 141,34 € | 222,36 € | |
1234048 | 16/01/2020 | 116,21 € | - 116,21 € | 106,15 € | ||
1234048 | 04/03/2020 | 23,74 € | - 23,74 € | 82,41 € | ||
1234048 | 09/04/2020 | - € | - € | 82,41 € | ||
Grand Total | 1.070,00 € | 463,49 € | 524,10 € | 82,41 € | 82,41 € |
Bonjour
La fonction Above n'est pas une fonction de script mais de graphique.
pour calculer ta colonne "Disponble" lors du chargement il te faut les fonction previous() et peek() se sont un peu les même mais elle ont des paramètres et un comportement différents.
1 - Assures toi que tes données soient bien au format Numérique lors du chargement
au besoin utilise la foncitn purgechar() pour enlever les € si présents au chargement.
Et ajoute cette ligne a ton script :
if(isnull(previous(Balance)),Balance, Balance+peek('Disponible')) as Disponible
1 on vérifie la première ligne de la table : if(isnull(previous(Balance)),
si Vrai = Balance = correspond a la première ligne de ta table
si Faux = Balance+peek('Disponible') (ici on va créer le champ Disponible à partir de Balance de la première ligne puis en prenant la valeur au dessus pour les lignes situées en dessous
Cordialement,
Bruno
Bonjour
La fonction Above n'est pas une fonction de script mais de graphique.
pour calculer ta colonne "Disponble" lors du chargement il te faut les fonction previous() et peek() se sont un peu les même mais elle ont des paramètres et un comportement différents.
1 - Assures toi que tes données soient bien au format Numérique lors du chargement
au besoin utilise la foncitn purgechar() pour enlever les € si présents au chargement.
Et ajoute cette ligne a ton script :
if(isnull(previous(Balance)),Balance, Balance+peek('Disponible')) as Disponible
1 on vérifie la première ligne de la table : if(isnull(previous(Balance)),
si Vrai = Balance = correspond a la première ligne de ta table
si Faux = Balance+peek('Disponible') (ici on va créer le champ Disponible à partir de Balance de la première ligne puis en prenant la valeur au dessus pour les lignes situées en dessous
Cordialement,
Bruno
Bonjour Bruno,
C'est exactement ce dont j'avais besoin, un tout grand merci !
Maintenant, je cherche encore le maillon de chaîne qui me manquait pour trouver le résultat comme un grand.
Ce que je ne savait pas c'est qu'il était possible de faire référence à un champs en cours de création dans la même instruction load:
if(isnull(previous(Balance)),Balance, Balance+peek('Disponible')) as Disponible
Je dormirai moins bête ce soit, encore merci !
Marwen
Bonjour
Attention çà ne marche que pour la fonction peek() qui sert spécifiquement à çà
peek évalue pour la table EN COURS de chargement previous évalue pur une Table DEJA Chargée
un peu comme rowno et Recno
Bon, cela explique peut être le nouveau problème que je rencontre:
En fait j'essaies d'appliquer la solution dans une boucle pour ce même calcul dans tous les dossiers, cela fonctionne correctement pour la première exécution mais donne un résultat incorrect pour la suite . J'ai essayé d'adapter mais toujours sans succès. Quelque chose m'échappe ?
Set Vcount = 0 ;
For each a in FieldValueList('CaseNumber')
Load
CaseNumber,
if(isnull(previous(Balance)),Balance, Balance+ if($(Vcoun) = 0,peek('Disponible'), previous(Disponible)) as Disponible
Resident PAIEMENTS where CaseNumber = $(a) ;
Let Vcount = $(Vcount) +1 ;
next a ;
Voici le résultat que j'obtient :
dossier | Date | Balance | Dispo | Résultat attendu |
114847 | 08/10/2004 | - 34,20 € | - 34,20 € | - 34,20 € |
114847 | 28/10/2004 | 75,24 € | 41,04 € | 41,04 € |
114847 | 16/02/2005 | - 41,04 € | 0 € | 0 € |
114557 | 08/10/2004 | - 32,08 € | - 32,08 € | - 32,08 € |
114557 | 23/11/2004 | 64,11 € | 0 € | 32,03 € |
114557 | 16/02/2005 | - 32,03 € | 0 € | 0 € |
Bonjour
Si j'ai bien compris tu souhaites qu'à chaque changement de nu de dossier la formule reparte à zéro en prenant la valeur de balance et non la valeur de disponible précédente.
Dans ce cas il faut faire la vérification if sur le numéro de dossier :
If(dossier=previous(dossier),balance +peek(disponible),balance) as disponible
À tester car je n'ai pas pu le faire encore pas eu le temps
Cordialement