Affichage de sommes par boucle For Next

Lenouveauapprenti Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   -  
 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.



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
A voir également:

3 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour, je suis étonné par
Dim 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 
1
Lenouveauapprenti Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   2
 
Rebonjour yg_be

j'ai essayé votre proposition mais ça n'a rien malheureusement.
Merci quand même.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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
0
Lenouveauapprenti Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   2
 
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 ?
0
Lenouveauapprenti Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   2
 
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()

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>
</code>
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
je pense que tu devrais commencer par des exercices plus simples.
0
Lenouveauapprenti
 
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.
0