Message de rapport:
 

Re: Sous totaux par classe de compte

Sujet: Re: Sous totaux par classe de compte
par drcharly93 sur 6/10/2009 13:50:58

Bonjour

vous pouvez dans ce cas utiliser la solution suivante qui peut être adapter à votre guise

1 - Création d'une requete de stockage temporaire
Cette requête devrait être construite sur le fichier qui contient les N° de compte et les montants, généralement ce fichier est appelé Ecriture
Rs est une source de donnees
sSql est une chaine

sSql = 
[
SELECT TOP1 Compte, Montant
FROM 
Ecriture
]
//TOP 1 pour ne récupérer qu'un seul enregistrement
SI pas HExecuteRequeteSQL( Rs, hRequeteDefaut, sSql ) Alors
 Erreur(HErreurInfo())
 Retour
Fin

//On suprime de la requête l'enregistrement

HLitPremier(Rs)
Si Pas HEndohors(Rs) Alors HSupprime(Rs)
Le HSupprime ne supprime pas ici physiquement dans le fichier mais uniquement dans la requête elle même

Alimentation de la requête
Ici on va remplir la requete avec le contenu du parcours du fichier des ecritures qui devra obligatoirement être parcouru sur le N° de compte afin d'effectuer la totalisation des sous comptes et bien entendu filtrer sur les écritures ciblées.
[code]
sCleParcours est une chaine
sFiltre est une chaine
sMemoCpte est une chaine
nMnt est un tableau de 3 monetaire

sFiltre = //Mettre ici la condition du filtre voir aide en ligne
sCleParcours = HFiltre(Ecritures, Compte, sFiltre )
POUR TOUS Ecriture SUR sCleParcours
 
 Si sMemoCpte = "" Alors sMemoCpte = Ecriture.Compte

 //Totalisation sur compte numéro a 1 chiffre
 Si sMemoCpte[[ A 1 ]] <> Ecriture.Compte[[ A 1 ]] Alors
  Rs.Compte = sMemoCpte[[ A 1 ]]
  Rs.Montant = nMnt[1] + nMnt[2] + nMnt[3]
  nMnt[3] = 0
  nMnt[2] = 0 
  nMnt[1] = 0
  HAjoute( Rs )
 Fin 

 //Totalisation sur compte numéro a 2 chiffres
 Si sMemoCpte[[ A 2 ]] <> Ecriture.Compte[[ A 2 ]] Alors
  Rs.Compte = sMemoCpte[[ A 2 ]]
  Rs.Montant = nMnt[2] 
  nMnt[3] = 0
  nMnt[2] = 0
  HAjoute( Rs )
 Fin

 //Totalisation sur compte numéro a 3 chiffres
 Si sMemoCpte[[ A 3 ]] <> Ecriture.Compte[[ A 3 ]] Alors
  Rs.Compte = sMemoCpte[[ A 3 ]]
  Rs.Montant = nMnt[3]
  nMnt[2] += nMnt[3]
  nMnt[3] = 0
  HAjoute( Rs )
  sMemoCpte = Ecriture.Compte
 Fin

 nMnt[3] += Rs.Montant
Fin


Ceci est saisie à la volée il faut peut etre revoir le concept mais l'idée est là, vous avec une requete qui contient les montants par classe
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2