Non.
Juste ajouter a l'etat le contenu de la variable au debut.
-
Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !Rejeter la notice
WD Requête avec report des soldes précédents
Discussion dans 'Windev' créé par ptrous, Nov 10, 2019.
Bonsoir à vous voici le code que je met à l ouverture de mon état
[windev]
//Déclaration des variables permettant de faire la sommes sur rupture Credit et Debit de la requete "REQ_Grand_Livre"
// avec 2 bornes Min et Max ---Mouvement.Date_Mouv BETWEEN {ParamDate_Mouv} AND {ParamDate_Mouv1}---sur date
rSomme_Grand_Livre_C, rSomme_Grand_Livre_D est un réel
//Déclaration des variables permettant de faire la sommes sur rupture Credit et Debit de la requete "REQ_Grand_Livre_Prec"
// avec une seule borne 'Mouvement.Date_Mouv < {ParamDate_Mouv1}' sur date ce qui nous permettra de ressortir les valeur qui sont en deca des bornes
rsomme_Grand_Livre_Prec_C,rSomme_Grand_Livre_Prec_D est un réel
//*****
HExécuteRequête(REQ_Grand_Livre_Prec,hRequêteDéfaut,FEN_Rapport_cmpt_gle.SAI_Date3,FEN_Rapport_cmpt_gle.SAI_compte_aux)
POUR TOUT REQ_Grand_Livre_Prec
rsomme_Grand_Livre_Prec_C +=REQ_Grand_Livre_Prec.Credit_Ecr
rSomme_Grand_Livre_Prec_D +=REQ_Grand_Livre_Prec.Debit_Ecr
Lib_solde_prec_solde=(rsomme_Grand_Livre_Prec_C-rSomme_Grand_Livre_Prec_D)
FIN
Lib_solde_prec_credit=rsomme_Grand_Livre_Prec_C
Lib_solde_prec_debit=rSomme_Grand_Livre_Prec_D
HExécuteRequête(REQ_Grand_Livre,hRequêteDéfaut,FEN_Rapport_cmpt_gle.SAI_Date3,FEN_Rapport_cmpt_gle.SAI_Date4,FEN_Rapport_cmpt_gle.SAI_compte_aux)
POUR TOUT REQ_Grand_Livre
rSomme_Grand_Livre_C +=REQ_Grand_Livre.Credit_Ecr
rSomme_Grand_Livre_D +=REQ_Grand_Livre.Debit_Ecr
FIN
CALC_Credit_Ecr=(rsomme_Grand_Livre_Prec_C+rSomme_Grand_Livre_C)
CALC_Debit_Ecr=(rSomme_Grand_Livre_Prec_D+rSomme_Grand_Livre_D)
HExécuteRequête(REQ_GL,hRequêteDéfaut,FEN_Rapport_cmpt_gle.SAI_compte_aux)
[/windev]
et voici le code que je met à Lecture des données de l etat
[windev]LIB_Solde +=(LIB_Credit_Ecr1-LIB_Debit_Ecr1)[/windev]
j ai ce résultat lorsque j execute entre 2 date
Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!
mais en temps normal je devrais avoir ceci (surement parceque ici je parcour tout)
Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!
il doit y avoir un dédail qui m échape surtout sur ce code LIB_Solde +=(LIB_Credit_Ecr1-LIB_Debit_Ecr1)
Personnellement, je me sert rarement des calculs dans un état.
Je créer plutôt un tableau de structure et ensuite je passe ma variable à l'état qui ne fait qu'affiché le résultat.
Je trouve ça beaucoup plus simple car on peut facilement déboguer notre code qui exécute les calculs.
Tu n'as qu'à ajouter dans l'ouverture de ton État
PROCÉDURE ETAT_Transaction(tMesDonnees est un tableau de stTransaction) (comme à l'ouverture d'une fenêtre)
Tu déclare un variable de type tableau de structure (stTransaction pour mon exemple)
tDonnnes est un tableau de stTransaction
Tu exécute ta requête
Remplie ta variable tDonnees en parcourant ta Requête avec un POUR TOUT, tout en exécutant tes calculs au passage
Et tu fait un IImprimeEtat(ETAT_Transaction, tDonnnes)
Dans ton état il ne te reste qu'à binder tes libellés à ta variable et le tour est jouer.
Je sais pas si c'est clair, mais bon, moi je me comprend![]()
ptrous apprécie ceci.
Personnellement, je me sert rarement des calculs dans un état.
Je créer plutôt un tableau de structure et ensuite je passe ma variable à l'état qui ne fait qu'affiché le résultat.
Je trouve ça beaucoup plus simple car on peut facilement déboguer notre code qui exécute les calculs.
Tu n'as qu'à ajouter dans l'ouverture de ton État
PROCÉDURE ETAT_Transaction(tMesDonnees est un tableau de stTransaction) (comme à l'ouverture d'une fenêtre)
Tu déclare un variable de type tableau de structure (stTransaction pour mon exemple)
tDonnnes est un tableau de stTransaction
Tu exécute ta requête
Remplie ta variable tDonnees en parcourant ta Requête avec un POUR TOUT, tout en exécutant tes calculs au passage
Et tu fait un IImprimeEtat(ETAT_Transaction, tDonnnes)
Dans ton état il ne te reste qu'à binder tes libellés à ta variable et le tour est jouer.
Je sais pas si c'est clair, mais bon, moi je me comprendCliquez pour agrandir...
Salut,
En fait tu as 2 cas dans ton édition
Cas 1 :
Si solde précédent <> 0
Il faut que tu fasse sur ta première ligne de données
LIB_Solde = Solde Précédent + (LIB_Credit_Ecr1-LIB_Debit_Ecr1)
Et ensuite sur la 2eme et les autres lignes
LIB_Solde += (LIB_Credit_Ecr1-LIB_Debit_Ecr1)
Ce qui donne pour la 1ere ligne
LIB_Solde = 137 207,00 + (2500-0) -> 139 707
Cas 2 :
Si solde précédent = 0
sur toutes les lignes
LIB_Solde += (LIB_Credit_Ecr1-LIB_Debit_Ecr1)
exactement ce que j ai penssé mais depuis la je parviens pas à établir le code windev
[windev]
//ceci donne
SI Lib_solde_prec_solde =0 ALORS
LIB_Solde += (LIB_Credit_Ecr1-LIB_Debit_Ecr1)
FIN
//par contre celui ci ne donne pas
SI Lib_solde_prec_solde <> 0 ALORS
LIB_Solde =Lib_solde_prec_solde + (LIB_Credit_Ecr1-LIB_Debit_Ecr1)
LIB_Solde += (LIB_Credit_Ecr1-LIB_Debit_Ecr1)
FIN
[/windev]
Pour le moment voila ce que j ai pu coder
Re,
Dans la Lecture des données de l etat il faut que tu mette un compteur , il faut déclarer le compteur dans l'init de letat
// init de l'etat //
Ncpt est un entier
// Bloc Lecture des données //
SI Lib_solde_prec_solde =0 ALORS
LIB_Solde += (LIB_Credit_Ecr1-LIB_Debit_Ecr1)
Sinon
Si ncpt = 1 alors
LIB_Solde = Lib_solde_prec_solde + (LIB_Credit_Ecr1-LIB_Debit_Ecr1)
Sinon
LIB_Solde += (LIB_Credit_Ecr1-LIB_Debit_Ecr1)
FIN
FIN
ncpt ++
Re nouveau code le compteur était mal placé
Dans la Lecture des données de l etat il faut que tu mette un compteur , il faut déclarer le compteur dans l'init de letat
// init de l'etat //
Ncpt est un entier
// Bloc Lecture des données //
ncpt ++
SI Lib_solde_prec_solde =0 ALORS
LIB_Solde += (LIB_Credit_Ecr1-LIB_Debit_Ecr1)
Sinon
Si ncpt = 1 alors
LIB_Solde = Lib_solde_prec_solde + (LIB_Credit_Ecr1-LIB_Debit_Ecr1)
Sinon
LIB_Solde += (LIB_Credit_Ecr1-LIB_Debit_Ecr1)
FIN
FIN