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
|