Affichage de sommes par boucle For Next
Lenouveauapprenti
Messages postés
306
Date d'inscription
Statut
Membre
Dernière intervention
-
Lenouveauapprenti -
Lenouveauapprenti -
Bonjour tout le monde
En continuation de ma première question ( le message antérieur), je vous expose mon souci.
je veux faire afficher sur un Label, appelé "LCumulQtes" la somme des quantités achetées du produit
selectionné à partir Combox (CbCodePdt).
Les données sont saisies dans un tableau nommé "TableAchats"
Mon projet d'application est conçu dans un environnement de VB6, avec ADO et SQL.
Je mets à votre disposition les codes ecris, mais n'ont pas donné le résultat escompté.
Merci pour votre aide.
En continuation de ma première question ( le message antérieur), je vous expose mon souci.
je veux faire afficher sur un Label, appelé "LCumulQtes" la somme des quantités achetées du produit
selectionné à partir Combox (CbCodePdt).
Les données sont saisies dans un tableau nommé "TableAchats"
Mon projet d'application est conçu dans un environnement de VB6, avec ADO et SQL.
Je mets à votre disposition les codes ecris, mais n'ont pas donné le résultat escompté.
Merci pour votre aide.
Private Sub CbCodePdt_Click()
SQLs = "select * from TablePdts where Code='" & CStr(CbCodePdt) & "'"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If CbCodePdt = RS![Code] Then
LNomPdt = RS![Produit]
LUteA = RS![Unite]
End If
RS.Close
'____________________
Dim VNbre As Integer
SQLs = "select * from TableAchats"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
VNbre = RS.RecordCount
RS.Close
Dim VQtes, VQ As Double
For VNbre = 1 To VNbre Step 1
SQLs = "select * from TableAchats where (N°=" & CInt(VNbre) & ") "
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
'If RS![Pdt] = LNomP Then
VQtes = RS![Qte]
'Else
'GoTo Ok:
'Exit Sub
'End If
VQ = VQ + VQtes
'Ok:
Next VNbre
'____________________
LCumulQtes = CDbl(VQ)
LCumulQtes = Format(LCumulQtes, "#,##0.00")
End Sub
3 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, je suis étonné parDim VQtes, VQ As Double For VNbre = 1 To VNbre Step 1 SQLs = "select * from TableAchats where (N°=" & CInt(VNbre) & ") " ' ... Next VNbre
Tu veux probablement faire plutôt:Dim VQtes as double, VQ As Double Dim Nboucle as integer For Nboucle = 1 To VNbre Step 1 SQLs = "select * from TableAchats where N°= " & Cstr(Nboucle) ' ... Next Nboucle -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
il me semble aussi que tu pourrais:
- soit calculer la somme directement par une requête SQL
- soit faire une boucle sur le recordset résultat de la première requête SQL, en utilisant movenext-
Rebonjour yg_be
je vous remercie pour vos suggestions, mais si tu pourrai plus clair et plus détaillant .
1 Comment pourrai je calculer la somme directement par une requête SQL ?
2 Comment pourrai je le faire par le biais de boucle sur le recordset résultat de la première requête SQL et l'utilisation de movenext ?
-
-
Re bonjour
Il se passe un truc que je voulais partager avec vous. En utilsant la syntaxe ci dessous, le programme me renvoie la somme totale des chiffres saisis sur la table, sans prendre compte du nom produit.
C'est à dire dans l'absence de cette condition qui lui demande de calculer seulement la somme des quantités du produit choisi. Alors que mon but est d'avoir la somme totale pour le produit selectionné.Private Sub CbCodePdt_Click()
</code>
SQLs = "select * from TablePdts where Code='" & CStr(CbCodePdt) & "'"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If CbCodePdt = RS![Code] Then
LNomPdt = RS![Produit]
LUteA = RS![Unite]
End If
RS.Close
'____________________
Dim VNbre As Long
SQLs = "select * from TableAchats"
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
VNbre = RS.RecordCount
RS.Close
Dim VQtes, VQ As Double
Dim VNBoucle As Long
For VNBoucle = 1 To VNbre Step 1
SQLs = "select * from TableAchats where (N°=" & CLng(VNBoucle) & ") "
If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
VQtes = RS![Qte]
VQ = VQ + VQtes
Next VNBoucle
'____________________
LCumulQtes = CDbl(VQ)
LCumulQtes = Format(LCumulQtes, "#,##0.00")
End Sub
<code>-
-
Re bonjour
C'est vrai. Je me forme sur le tas et j'ai beaucoup à apprendre sur la programmation.
Et comme je suis arrivé à ce point où la condition bloque la boucle For Next, je demande de l'aide à vous et à toute la communautè de ce forum.
J'attends toujours de l'aide de votre part, avec toute ma reconnaissance.
-