| 
					
  
       | 
		
			
				 | Sous totaux  par classe de compte |  |  
  	| Stagiaire WDF   Inscrit:07/05/2009 23:03
 Post(s): 14 | Bonjour,Quelqu'un a une idée sur la procédure d'un calcul de totaux et sous totaux par compte.
 je m'explique à travers cet exemple ci-dessous:
 j'ai des comptes à 04 chiffres , je voudrais calculer le montant par compte à quatre chiffres,
 puis à 03 chiffres, puis à 02 chiffres et enfin à 1 chiffre.
 un exemple chiffré:
 J''ai dans mon fichier des comptes à 04 chiffres avec leur montant. Le fichier est indexé sur le compte
 - cpte 2430 Montant: 1000.00
 -cpte 2431 Montant: 2000.00
 -cpte 2450 montant : 500.00
 -cpte 2451 montant : 1500.00
 -cpte 2500 montant : 600.00
 Donc j'aimerais connaitre la procédure de calcul qui permettra l'affichage avec rupture sur comptes dans l'ordre suivant :
 cpte 2430 montant : 1000.00
 cpte 2431 montant : 2000.00
 s/total cpte 243 montant : 3000.00
 cpte 2450 montant : 500.00
 cpte 2451 montant : 1500.00
 s/total cpte 245 montant : 2000.00
 s/total cpte 24 montant : 5000.00
 
 cpte 2500 montant: 600.00
 s/total cpte 250 montant : 600.00
 s/total cpte 25 montant : 600.00
 TOTAL CLASSE 2 MONTANT : 5600.00
 
 Merçi de votre réponse
 
 
	    Contribution le : 04/10/2009 18:21 |  
    |  |  
    
    
   
  
       | 
		
			
				 | Re: Sous totaux  par classe de compte |  |  
  	| Animateur WDF   Inscrit:02/03/2003 04:07
 De Noisy le grand(93) Post(s): 2745 | Bonjour Dans ton état tu fait un clic doit pour aller dans la description de ton état, - tu clic sur le bouton Tri/Rupture -Dans la liste des rupture de l'état tu clic 4 fois sur le bouton  + - tu valide les écrans A partir de là tu a d'affiché 4 ruptures dans ton état  dans le bloc code HAUT_RUPTURE1  tu un bloc Rupture ? de HAUT_RUPTURE1 dans ce bloc tu écrit: Compte est le nom de la rubrique de fichier traité MaSource est un nom générique représentant de nom de la source en cours 
Renvoyer MaSource.Compte[[ 1 ]]
Dans le bloc HAUT_RUPTURE2 
Renvoyer MaSource.Compte[[ 1 A 2 ]]
Dans le bloc HAUT_RUPTURE3 
Renvoyer MaSource.Compte[[ 1 A 3 ]]
Dans le bloc HAUT_RUPTURE4 
Renvoyer MaSource.Compte[[ 1 A 4 ]]
Les totaux sont a afficher dans BAS_RUPTURE  de chaque rupture.
 
	    Contribution le : 04/10/2009 19:34 |  
    |  |  
    
    
   
  
       | 
		
			
				 | Re: Sous totaux  par classe de compte |  |  
  	| Stagiaire WDF   Inscrit:07/05/2009 23:03
 Post(s): 14 | Bonjour,
 Peut être que je me suis mal exprimé, j'ai oublié de te dire
 que j'ai fait une application par programmation sur une balance de comptes. la balance m'affiche les comptes à 04 chiffres avec un Total général dans l'ordre suivant
 
 -cpte 2430 Montant:   1000.00
 -cpte 2431 Montant:   2000.00
 -cpte 2450 montant :   500.00
 -cpte 2451 montant :  1500.00
 -cpte 2500 montant :   600.00
 
 TOTAL GENERAL      :  5600.00
 jusqu'içi il n'ya aucun problème
 
 Le problème réside et que je n'arrive pas à cerner, c'est
 comment faire la rupture par programmation des sous totaux et totaux par compte à 03 chiffres,02 et 01 chiffre et ceci
 suivant l'affichage ci-dessous :
 
 cpte :2430             montant : 1000.00
 cpte :2431             montant : 2000.00
 
 S/TOTAL Compte :243    montant : 3000.00
 
 cpte 2450              montant : 500.00
 cpte 2451              montant : 1500.00
 s/total cpte :245 montant : 2000.00//total des cptes 2450 et 2451
 s/total cpte: 24 montant : 5000.00//total des comptes 2430 à 2451
 
 cpte 2500        montant:  600.00
 s/total cpte 250 montant : 600.00//total cpte 2500
 s/total cpte 25  montant : 600.00//total cpte 2500
 
 TOTAL CLASSE 2 MONTANT :   5600.00 // total général des comptes qui commencent par <<2>>
 
 
	    Contribution le : 05/10/2009 15:35 |  
    |  |  
    
    
   
  
       | 
		
			
				 | Re: Sous totaux  par classe de compte |  |  
  	| Animateur WDF   Inscrit:02/03/2003 04:07
 De Noisy le grand(93) Post(s): 2745 | Bonjour vous pouvez dans ce cas utiliser la solution suivante qui peut être adapter à votre guise1 - 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
 
	    Contribution le : 06/10/2009 13:50 |  
    |  |  
    
    
   
  
       | 
		
			
				 | Re: Sous totaux  par classe de compte |  |  
  	| Stagiaire WDF   Inscrit:07/05/2009 23:03
 Post(s): 14 | Bonsoir,
 j'ai suivi la procédure que vous m'aviez transmise, le problème, et que je n'arrive pas à visualier le contenu du
 fichier temporaire, malgré que lors du lancement de la procédure, il n'ya aucun renvoi d'erreur.Etant donné que
 c'est la première fois que j'utilisais la création d'une
 requête de stockage temporaire, j'aimerais savoir la démarche
 à faire pour que je puisse visualiser le contenu du fichier
 crée temporairement.
 
 Cordialement votre.
 
 
	    Contribution le : 07/10/2009 22:13 |  
    |  |  
    
    
   
  
       | 
		
			
				 | Re: Sous totaux  par classe de compte |  |  
  	| Animateur WDF   Inscrit:02/03/2003 04:07
 De Noisy le grand(93) Post(s): 2745 | Bonjour voici une méthode testé avec une procédure 
PROCEDURE proAfficheTotal(pNiveau est un entier, sMemoCpte est une chaîne )
sSql est une chaîne
Rs est une Source de Données
sSql = "SELECT SUM( Montant) AS MNT FROM Ecriture WHERE Compte Like '" + sMemoCpte[[ A pNiveau ]] + "%'"
HExécuteRequêteSQL( Rs, hRequêteDéfaut, sSql )
TableAjouteLigne( Table1, sMemoCpte[[ A pNiveau ]], Rs.Mnt)
cette méthode affiche le contenu dans une table nommé Table1 qui contient 2 colonnes - Compte - Montant Vous pouvez bien entendu modifier ce code pour l'adapter a vos besoins Méthode de parcours 
sSql est une chaine
RsEcr est une source de donnees
sMemoCpte est une chaine
sSql = 
[
SELECT Compte, Montant
FROM 
Ecriture
]
//Penser a ajouter une clause WHERE pour limiter par
//exemple sur une période voulue
SI PAS HExécuteRequêteSQL( RsEcr, hRequêteDéfaut, sSql ) ALORS
	Erreur(HErreurInfo())
	RETOUR
FIN
POUR TOUS RsEcr sur "Compte"
	SI sMemoCpte = "" ALORS sMemoCpte = RsEcr.Compte
	//Totalisation sur compte numéro a 1 chiffre 
 SI sMemoCpte[[ A 1 ]] <> RsEcr.Compte[[ A 1 ]] ALORS
 	proAfficheTotal (3 , sMemoCpte )
 	proAfficheTotal ( 2, sMemoCpte )
 	proAfficheTotal( 1, sMemoCpte )	
 FIN
	//Totalisation sur compte numéro a 2 chiffre
	SI sMemoCpte[[ A 2 ]] <> RsEcr.Compte[[ A 2 ]] ALORS
		proAfficheTotal( 3, sMemoCpte )
		proAfficheTotal( 2, sMemoCpte )
		sMemoCpte = RsEcr.Compte
	FIN 
	
	//Totalisation sur compte numéro a 3 chiffres
	SI sMemoCpte[[ A 3 ]] <> RsEcr.Compte[[ A 3 ]] ALORS
  	proAfficheTotal( 3, sMemoCpte )
  	sMemoCpte = RsEcr.Compte
	FIN
	
	TableAjouteLigne( Table1, RsEcr.Compte, RsEcr.Montant)
	FenRepeint(frmTest)
FIN
proAfficheTotal( 3, sMemoCpte )
proAfficheTotal( 2, sMemoCpte )
proAfficheTotal( 1, sMemoCpte )
 
	    Contribution le : 10/10/2009 16:36 |  
    |  |  
    
    
   
 
Vous ne pouvez pas débuter de nouveaux sujets.
 Vous pouvez voir les sujets.
 Vous ne pouvez pas répondre aux contributions.
 Vous ne pouvez pas éditer vos contributions.
 Vous ne pouvez pas effacez vos contributions.
 Vous ne pouvez pas ajouter de nouveaux sondages.
 Vous ne pouvez pas voter en sondage.
 Vous ne pouvez pas attacher des fichiers à vos contributions.
 Vous ne pouvez pas poster sans approbation.
 | Connexion Menu Chercher WDForge Chercher Web Partenaires |