Récupération de valeurs du petit au grand

Résolu/Fermé
Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024 - 16 mai 2019 à 20:30
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 - 21 mai 2019 à 21:59
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

3 réponses

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
16 mai 2019 à 21:59
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?
0
Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024 2
Modifié le 16 mai 2019 à 22:49
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
0
Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024 2
17 mai 2019 à 03:54
Re bonjour

Je vous reformule mon probléme d'une autre façon plus simple.
Comment pourrai je trier , (gràce à un code de vb6, ) les cellules d'une colonne de table en acces de façon croissante. ?

Merci d'avance pour votre aide
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024
17 mai 2019 à 18:40
montre-nous le code que tu utilises. difficile de t'expliquer comment adapter ton code sans rien en savoir.
0
Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024 2
17 mai 2019 à 19:43
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:




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

    
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
17 mai 2019 à 20:13
as-tu essayé de faire
delete * from TableBalance
pour vider la table?
0
Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024 2
17 mai 2019 à 20:27
Re bonjour

Jamais. pour une simple raison : je ne le savais pas
je vais l'essayer

Merci pour l'information
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
17 mai 2019 à 21:18
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
0
Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024 2
18 mai 2019 à 12:25
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 :


'________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
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
Modifié le 18 mai 2019 à 12:53
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
0
Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024 2
18 mai 2019 à 17:13
Re bonjour

Merci infiniment;
0
Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024 2
21 mai 2019 à 15:36
Bonjour

J'ai essayé votre suggestion avec réussite pour récupérer le cumul d'une table sans aucun filtre.
la Question comment pourrai je faire avec ces phrases de codes pour avoir le cumul avec filtre,
c'est à dire le calcul des cumul pour chaque compte enregistré dans cette table ?

Merci d'avance
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024
21 mai 2019 à 21:59
chaque compte enregistré dans quelle table?
0