Récupération de valeurs du petit au grand
Résolu
Lenouveauapprenti
Messages postés
306
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Tout d'abord, veuillez me pardonner si je me suis trompé du forum, car je n'arrive pas à définir mon problème.
Je travaille sur une petite application de comptabilité dans le VB6 avec acces.
J'ai arrivé à l'édition de la balance. Celle ci contient
N° du compte
L'intitulé de compte
le montant du Débit
le montant du Crédit
le Solde cumulé
Normalement la saisie des opérations se faisaient par mois et par type de journal ( Achats,Ventes,Banques,Caisse,Opération diverses),
Comme j'édite ma balance par ordre de compte,j'ai rencontré un problème dans le cumul des soldes.
alors j'ai pensé que si j'arrive à récupérer les valeurs de la table de base, du petit compte au grand, et les enregistrer classées dans une autre table de transit, et de là j'édite ma balance, peut être que ça réussira.
Le comment pour récupérer ces valeurs de cette façon m'échappe
Merci pour votre aide
Tout d'abord, veuillez me pardonner si je me suis trompé du forum, car je n'arrive pas à définir mon problème.
Je travaille sur une petite application de comptabilité dans le VB6 avec acces.
J'ai arrivé à l'édition de la balance. Celle ci contient
N° du compte
L'intitulé de compte
le montant du Débit
le montant du Crédit
le Solde cumulé
Normalement la saisie des opérations se faisaient par mois et par type de journal ( Achats,Ventes,Banques,Caisse,Opération diverses),
Comme j'édite ma balance par ordre de compte,j'ai rencontré un problème dans le cumul des soldes.
alors j'ai pensé que si j'arrive à récupérer les valeurs de la table de base, du petit compte au grand, et les enregistrer classées dans une autre table de transit, et de là j'édite ma balance, peut être que ça réussira.
Le comment pour récupérer ces valeurs de cette façon m'échappe
Merci pour votre aide
A voir également:
- Récupération de valeurs du petit au grand
- Trier du plus petit au plus grand excel - Guide
- Photo insta en grand - Guide
- Convertisseur récupération de texte - Guide
- Petit 1 comme ² ✓ - Forum Windows
- Récupérer au terminal de fret combien de temps - Forum Consommation & Internet
3 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, je suppose que les 5 champs que tu nous montres sont les champs que tu souhaites pour ton résultat.
souhaites-tu un seul résultat par compte? ou bien veux-tu reprendre toutes les opérations, en calculant à chaque fois le solde instantané?
peux-tu nous décrire les tables et les champs de ta base?
peux-tu également partager la source de ton application?
souhaites-tu un seul résultat par compte? ou bien veux-tu reprendre toutes les opérations, en calculant à chaque fois le solde instantané?
peux-tu nous décrire les tables et les champs de ta base?
peux-tu également partager la source de ton application?
Rebonjour
Merci pour ta réponse. Ce que je cherche , comment, à partir de la table1, où les comptes sont enregistrés d'une façon désordonné, les récupérer du petit compte au plus grand et les enregistrer par ordre croissant dans la table2.
Encore merci
Merci pour ta réponse. Ce que je cherche , comment, à partir de la table1, où les comptes sont enregistrés d'une façon désordonné, les récupérer du petit compte au plus grand et les enregistrer par ordre croissant dans la table2.
Encore merci
Re bonjour
Voilà, je vous explique avant tout.
J'ai :
A- une Table principale ( TableTraitement) où je saisie les opérations comptables.
B-une commande pour imprimer la Balance (Etat comptable). on y trouve 6 colonnes
Colonne 1 : Compte
Colonne 2 : Intitulé
Colonne 3 : Debit
Colonne 4 : Credit
Colonne 5 : Solde
Colonne 6 : Cumul
Pour passer de la TableTraitement à la Balance, je passe par une Table de transit (TableBalance).
Celle-ci se vide et se remplie lors de chaque commande d'impression de la balance.
Après plusieurs tentative, j'ai réussi une partie de mon objectif, c'est à dire avoir le classement par ordre croissant des comptes, en passant par une autre table de transit ( TableBalanceClas ). Celle-ci se vide et se remplie lors de chaque commande.
Elle se remplie par la récupération des données de la première table de transit (TableBalance).
Mon problème reste dans l'enregistrement des cumul dans cet ordre (c.à.d l'ordre croissant des comptes)
mes codes sont comme suite:
Voilà, je vous explique avant tout.
J'ai :
A- une Table principale ( TableTraitement) où je saisie les opérations comptables.
B-une commande pour imprimer la Balance (Etat comptable). on y trouve 6 colonnes
Colonne 1 : Compte
Colonne 2 : Intitulé
Colonne 3 : Debit
Colonne 4 : Credit
Colonne 5 : Solde
Colonne 6 : Cumul
Pour passer de la TableTraitement à la Balance, je passe par une Table de transit (TableBalance).
Celle-ci se vide et se remplie lors de chaque commande d'impression de la balance.
Après plusieurs tentative, j'ai réussi une partie de mon objectif, c'est à dire avoir le classement par ordre croissant des comptes, en passant par une autre table de transit ( TableBalanceClas ). Celle-ci se vide et se remplie lors de chaque commande.
Elle se remplie par la récupération des données de la première table de transit (TableBalance).
Mon problème reste dans l'enregistrement des cumul dans cet ordre (c.à.d l'ordre croissant des comptes)
mes codes sont comme suite:
Private Sub CmdImprimer_Click()
'la commande d'mpression ( Sélection de : Tous )
If OptTous.Value = True Then
'Aller vers la sub de calcul
Call Balance
End If
Sub Balance()
'________Vider la TableBalance
Dim I, PN, DN As Integer
'Determiner le premier Numéro
SQLs = "select * from TableBalance where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdreBalance asc"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdreBalance] <> 0 Then
RS.MoveFirst
PN = RS![NOrdreBalance]
End If
RS.Close
'Determiner le Dernier numéro
SQLs = "select * from TableBalance where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdreBalance asc"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdreBalance] <> 0 Then
RS.MoveLast
DN = RS![NOrdreBalance]
End If
RS.Close
'Récupérer les valeurs et les enregistrer
For I = PN To DN Step 1
SQLs = "select * from TableBalance where ((Dossier='" & CStr(VarDossier) & "')and (NOrdreBalance=" & CInt(I) & "))"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If I <> 0 Then
SQLs = "select * from TableBalance where ((Dossier='" & CStr(VarDossier) & "')and (NOrdreBalance=" & CInt(I) & "))"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdreBalance] = I Then
RS.Delete
End If
RS.Close
End If
Next I
'_________Vider la TableBalanceClas
Dim IClas, PNClas, DNClas As Integer
'Determiner le premier Numéro
SQLs = "select * from TableBalanceClas where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdre] <> 0 Then
RS.MoveFirst
PNClas = RS![NOrdre]
End If
RS.Close
'Determiner le dernier numéro
SQLs = "select * from TableBalanceClas where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdre] <> 0 Then
RS.MoveLast
DNClas = RS![NOrdre]
End If
RS.Close
'Récupérer les valeurs et les enregistrer
For IClas = PNClas To DNClas Step 1
SQLs = "select * from TableBalanceClas where ((Dossier='" & CStr(VarDossier) & "')and (NOrdre=" & CInt(IClas) & "))"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If IClas <> 0 Then
SQLs = "select * from TableBalanceClas where ((Dossier='" & CStr(VarDossier) & "')and (NOrdre=" & CInt(IClas) & "))"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdre] = IClas Then
RS.Delete
End If
RS.Close
End If
Next IClas
'_________Remplir la TableBalance
Dim ITrait, PNTrait, DNTrait As Integer
SQLs = "select * from TableTraitement where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdre] <> 0 Then
RS.MoveFirst
PNTrait = RS![NOrdre]
End If
RS.Close
SQLs = "select * from TableTraitement where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdre] <> 0 Then
RS.MoveLast
DNTrait = RS![NOrdre]
End If
RS.Close
For ITrait = PNTrait To DNTrait Step 1
Dim Compte, Intitule As String
Dim Debit, Credit As Double
SQLs = "select * from TableTraitement where ((Dossier='" & CStr(VarDossier) & "')and (NOrdre=" & CInt(ITrait) & "))"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdre] = ITrait Then
Compte = RS![Compte]
Intitule = RS![Intitule]
End If
RS.Close
SQLs = "select sum(Debit) from TableTraitement where ((Dossier='" & CStr(VarDossier) & "')and (Compte='" & CStr(Compte) & "'))"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
Debit = Format(RS.Fields(0), "#,##0.00")
RS.Close
SQLs = "select sum(Credit) from TableTraitement where ((Dossier='" & CStr(VarDossier) & "')and (Compte='" & CStr(Compte) & "'))"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
Credit = Format(RS.Fields(0), "#,##0.00")
RS.Close
'____________________
Dim NOrdreBalance As Integer
SQLs = "select * from TableBalance where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdreBalance asc"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdreBalance] <> 0 Then
RS.MoveLast
NOrdreBalance = RS![NOrdreBalance] + 1
Else
NOrdreBalance = 1
End If
RS.Close
SQLs = "select * from TableBalance where ((Dossier='" & CStr(VarDossier) & "')and (Compte='" & CStr(Compte) & "'))"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS.EOF Then
GoTo Oks:
Exit Sub
Else
GoTo Nos:
Exit Sub
End If
Oks:
RS.AddNew
RS![NOrdreBalance] = NOrdreBalance
RS![Societe] = VarSociete
RS![Dossier] = VarDossier
RS![Compte] = Compte
RS![Intitule] = Intitule
RS![Debit] = Debit
RS![Credit] = Credit
RS.Update
RS.Close
Nos:
Next ITrait
'________Reclassement des comptes dans la TableBalanceClas
Dim NbreLignes, ILignes, NOrdreLignes As Integer
Dim CompteLignes, IntituleLignes As String
Dim DebitLignes, CreditLignes As Double
SQLs = "select Compte from TableBalance where (Dossier='" & CStr(VarDossier) & "')" & "order by Compte asc"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenStatic
NbreLignes = RS.RecordCount
RS.Close
For ILignes = 1 To NbreLignes Step 1
SQLs = "select * from TableBalance where ((Dossier='" & CStr(VarDossier) & "') and (NOrdreBalance=" & CInt(ILignes) & "))"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenStatic
If RS![NOrdreBalance] = ILignes Then
CompteLignes = RS![Compte]
IntituleLignes = RS![Intitule]
DebitLignes = RS![Debit]
CreditLignes = RS![Credit]
End If
RS.Close
'______________
SQLs = "select * from TableBalanceClas where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenStatic
If RS![NOrdre] <> 0 Then
RS.MoveLast
NOrdreLignes = RS![NOrdre] + 1
Else
NOrdreLignes = 1
End If
RS.Close
'______________
SQLs = "select * from TableBalanceClas where (Compte=" & CLng(CompteLignes) & ")"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenStatic
If RS.EOF Then
GoTo OkLignes:
Exit Sub
Else
GoTo NoLignes:
Exit Sub
End If
OkLignes:
RS.AddNew
RS![Compte] = CLng(CompteLignes)
RS![Intitule] = IntituleLignes
RS![Debit] = DebitLignes
RS![Credit] = CreditLignes
RS![NOrdre] = NOrdreLignes
RS![Dossier] = VarDossier
RS.Update
RS.Close
NoLignes:
Next ILignes
'________Calcul des soldes
Dim ISoldes, PNSoldes, DNSoldes As Integer
Dim DebitSoldes, CreditSoldes, MtSoldes As Double
SQLs = "select * from TableBalanceClas where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdre] <> 0 Then
RS.MoveFirst
PNSoldes = RS![NOrdre]
End If
RS.Close
SQLs = "select * from TableBalanceClas where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdre] <> 0 Then
RS.MoveLast
DNSoldes = RS![NOrdre]
End If
RS.Close
For ISoldes = PNSoldes To DNSoldes Step 1
SQLs = "select * from TableBalanceClas where ((Dossier='" & CStr(VarDossier) & "') and (NOrdre=" & CInt(ISoldes) & "))"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdre] = ISoldes Then
DebitSoldes = RS![Debit]
CreditSoldes = RS![Credit]
End If
RS.Close
MtSoldes = CDbl(DebitSoldes) - CDbl(CreditSoldes)
SQLs = "select * from TableBalanceClas where ((Dossier='" & CStr(VarDossier) & "') and (NOrdre=" & CInt(ISoldes) & "))"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdre] = ISoldes Then
RS![Solde] = MtSoldes
RS.Update
End If
RS.Close
Next ISoldes
End Sub
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
suggestion:
SQLs = " select Compte, Intitule, sum(Debit) as totaldebit, sum(Credit) as totalcredit " _ + " from TableTraitement " _ + " where Dossier='" + CStr(VarDossier) + "' order by Compte" RStrait.Open SQLs, db, adOpenKeyset, adLockPessimistic db.Execute "delete * from TableBalance where Dossier='" + CStr(VarDossier) + "' " RSbal.Open "TableBalance", db, adOpenKeyset, adLockPessimistic cumul = 0 Do While Not RStrait.EOF RSbal.AddNew RSbal![Societe] = VarSociete RSbal![dossier] = VarDossier RSbal![Compte] = RStrait!Compte RSbal![Intitule] = RStrait!Intitule RSbal![Debit] = RStrait!totaldebit RSbal![Credit] = RStrait!totalcredit RSbal![solde] = RStrait!totaldebit - RStrait!totalcredit cumul = cumul + RSbal![solde] RSbal![cumul] = cumul RSbal.Update RStrait.MoveNext Loop RStrait.Close RSbal.Close
Bonjour
Vous m'aviez bien aidé par votre suggestion. je m'en suis inspiré et le resultat était positif.
voilà ce que j'ai écris comme code :
Toute ma commande d'impression est redevenue comme suite :
Avec toute ma reconnaissance
Vous m'aviez bien aidé par votre suggestion. je m'en suis inspiré et le resultat était positif.
voilà ce que j'ai écris comme code :
'________NOrdre
Dim NbreNOrdre As Integer
NOrdreLignes = 1
SQLs = "select * from TableBalanceClas where (Dossier='" & CStr(VarDossier) & "')" & "order by Compte asc"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
Do While Not RS.EOF
RS![NOrdre] = NOrdreLignes
RS.Update
NOrdreLignes = NOrdreLignes + 1
RS.MoveNext
Loop
RS.Close
Toute ma commande d'impression est redevenue comme suite :
Sub Balance()
'________Vider la TableBalance
SQLs = "delete * from TableBalance"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
'_________Vider la TableBalanceClas
SQLs = "delete * from TableBalanceClas"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
'_________Remplir la TableBalance
Dim ITrait, PNTrait, DNTrait As Integer
SQLs = "select * from TableTraitement where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdre] <> 0 Then
RS.MoveFirst
PNTrait = RS![NOrdre]
End If
RS.Close
SQLs = "select * from TableTraitement where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdre] <> 0 Then
RS.MoveLast
DNTrait = RS![NOrdre]
End If
RS.Close
For ITrait = PNTrait To DNTrait Step 1
Dim Compte, Intitule As String
Dim Debit, Credit As Double
SQLs = "select * from TableTraitement where ((Dossier='" & CStr(VarDossier) & "')and (NOrdre=" & CInt(ITrait) & "))"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdre] = ITrait Then
Compte = RS![Compte]
Intitule = RS![Intitule]
End If
RS.Close
SQLs = "select sum(Debit) from TableTraitement where ((Dossier='" & CStr(VarDossier) & "')and (Compte='" & CStr(Compte) & "'))"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
Debit = Format(RS.Fields(0), "#,##0.00")
RS.Close
SQLs = "select sum(Credit) from TableTraitement where ((Dossier='" & CStr(VarDossier) & "')and (Compte='" & CStr(Compte) & "'))"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
Credit = Format(RS.Fields(0), "#,##0.00")
RS.Close
'____________________
Dim NOrdreBalance As Integer
SQLs = "select * from TableBalance where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdreBalance asc"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdreBalance] <> 0 Then
RS.MoveLast
NOrdreBalance = RS![NOrdreBalance] + 1
Else
NOrdreBalance = 1
End If
RS.Close
SQLs = "select * from TableBalance where ((Dossier='" & CStr(VarDossier) & "')and (Compte='" & CStr(Compte) & "'))"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS.EOF Then
GoTo Oks:
Exit Sub
Else
GoTo Nos:
Exit Sub
End If
Oks:
RS.AddNew
RS![NOrdreBalance] = NOrdreBalance
RS![Societe] = VarSociete
RS![Dossier] = VarDossier
RS![Compte] = Compte
RS![Intitule] = Intitule
RS![Debit] = Debit
RS![Credit] = Credit
RS.Update
RS.Close
Nos:
Next ITrait
'________Reclassement des comptes dans la TableBalanceClas
Dim NbreLignes, ILignes, NOrdreLignes As Integer
Dim CompteLignes, IntituleLignes As String
Dim DebitLignes, CreditLignes As Double
SQLs = "select Compte from TableBalance where (Dossier='" & CStr(VarDossier) & "')" & "order by Compte asc"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenStatic
NbreLignes = RS.RecordCount
RS.Close
For ILignes = 1 To NbreLignes Step 1
SQLs = "select * from TableBalance where ((Dossier='" & CStr(VarDossier) & "') and (NOrdreBalance=" & CInt(ILignes) & "))"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenStatic
If RS![NOrdreBalance] = ILignes Then
CompteLignes = RS![Compte]
IntituleLignes = RS![Intitule]
DebitLignes = RS![Debit]
CreditLignes = RS![Credit]
End If
RS.Close
'______________
SQLs = "select * from TableBalanceClas where (Compte=" & CLng(CompteLignes) & ")"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenStatic
If RS.EOF Then
GoTo OkLignes:
Exit Sub
Else
GoTo NoLignes:
Exit Sub
End If
OkLignes:
RS.AddNew
RS![Compte] = CLng(CompteLignes)
RS![Intitule] = IntituleLignes
RS![Debit] = DebitLignes
RS![Credit] = CreditLignes
RS![Dossier] = VarDossier
RS.Update
RS.Close
NoLignes:
Next ILignes
'________NOrdre
Dim NbreNOrdre As Integer
NOrdreLignes = 1
SQLs = "select * from TableBalanceClas where (Dossier='" & CStr(VarDossier) & "')" & "order by Compte asc"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
Do While Not RS.EOF
RS![NOrdre] = NOrdreLignes
RS.Update
NOrdreLignes = NOrdreLignes + 1
RS.MoveNext
Loop
RS.Close
'________Calcul des soldes
Dim ISoldes, PNSoldes, DNSoldes, ISoldesAv As Integer
Dim DebitSoldes, CreditSoldes, MtSoldes, MtCumuls As Double
Dim DebitSoldesAv, CreditSoldesAv, MtSoldesAv, MtCumulsAv As Double
SQLs = "select * from TableBalanceClas where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdre] <> 0 Then
RS.MoveFirst
PNSoldes = RS![NOrdre]
End If
RS.Close
SQLs = "select * from TableBalanceClas where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdre] <> 0 Then
RS.MoveLast
DNSoldes = RS![NOrdre]
End If
RS.Close
For ISoldes = PNSoldes To DNSoldes Step 1
SQLs = "select * from TableBalanceClas where ((Dossier='" & CStr(VarDossier) & "') and (NOrdre=" & CInt(ISoldes) & "))"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdre] = ISoldes Then
DebitSoldes = RS![Debit]
CreditSoldes = RS![Credit]
End If
RS.Close
MtSoldes = CDbl(DebitSoldes) - CDbl(CreditSoldes)
SQLs = "select * from TableBalanceClas where ((Dossier='" & CStr(VarDossier) & "') and (NOrdre=" & CInt(ISoldes) & "))"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdre] = ISoldes Then
RS![Solde] = MtSoldes
RS.Update
End If
RS.Close
'_______________Les données de la ligne antérieure
ISoldesAv = ISoldes - 1
If ISoldes = 1 Then
MtCumuls = CDbl(MtSoldes)
ElseIf ISoldes > 1 Then
SQLs = "select * from TableBalanceClas where ((Dossier='" & CStr(VarDossier) & "') and (NOrdre=" & CInt(ISoldesAv) & "))"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdre] = ISoldesAv Then
MtCumulsAv = RS![Cumul]
End If
RS.Close
MtCumuls = CDbl(MtCumulsAv) + CDbl(MtSoldes)
End If
SQLs = "select * from TableBalanceClas where ((Dossier='" & CStr(VarDossier) & "') and (NOrdre=" & CInt(ISoldes) & "))"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS![NOrdre] = ISoldes Then
RS![Cumul] = MtCumuls
RS.Update
End If
RS.Close
Next ISoldes
'_____________________________________________
Dim DebitG, CreditG, SoldeG As Double
SQLs = "select sum(Debit) from TableBalance where (Dossier='" & CStr(VarDossier) & "')"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
DebitG = Format(RS.Fields(0), "#,##0.00")
RS.Close
SQLs = "select sum(Credit) from TableBalance where (Dossier='" & CStr(VarDossier) & "')"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
CreditG = Format(RS.Fields(0), "#,##0.00")
RS.Close
SoldeG = Format((CDbl(DebitG) - CDbl(CreditG)), "#,##0.00")
'_________________________________________________________________________
On Error Resume Next
SQLs = "select * from TableBalanceClas where (Dossier='" & CStr(VarDossier) & "')" & "order by Compte asc"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
ADBalance.RecordSource = SQLs
Set DRBalance.DataSource = ADBalance
ADBalance.Refresh
DRBalance.Sections("Section4").Controls("LDossier").Caption = VarDossier
DRBalance.Sections("Section4").Controls("LDateDebut").Caption = VarDateD
DRBalance.Sections("Section4").Controls("LDateFinale").Caption = VarDateF
DRBalance.Sections("Section5").Controls("LblSolde").Caption = Format(SoldeG, "#,##0.00")
DRBalance.Show
DRBalance.WindowState = 2
End Sub
Avec toute ma reconnaissance
suggestion corrigée:
SQLs = " select Compte, Intitule, sum(Debit) as totaldebit, sum(Credit) as totalcredit " _ + " from TableTraitement " _ + " where Dossier='" + CStr(VarDossier) _ + "' group by Compte, Intitule order by Compte" RStrait.Open SQLs, db, adOpenKeyset, adLockPessimistic db.Execute "delete * from TableBalance where Dossier='" + CStr(VarDossier) + "' " RSbal.Open "TableBalance", db, adOpenKeyset, adLockPessimistic cumul = 0 Do While Not RStrait.EOF RSbal.AddNew RSbal![Societe] = VarSociete RSbal![dossier] = VarDossier RSbal![Compte] = RStrait!Compte RSbal![Intitule] = RStrait!Intitule RSbal![Debit] = RStrait!totaldebit RSbal![Credit] = RStrait!totalcredit RSbal![solde] = RStrait!totaldebit - RStrait!totalcredit cumul = cumul + RSbal![solde] RSbal![cumul] = cumul RSbal.Update RStrait.MoveNext Loop RStrait.Close RSbal.Close