Pb code vba avec recordset

Fermé
cow040 Messages postés 13 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 19 mai 2005 - 19 mai 2005 à 17:40
Jean-François Pillou Messages postés 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 - 19 mai 2005 à 18:35
Bonjour, j' ai réaliser un code qui me permet de sortir des articles suivant les commandes c'est a dire que je sors d'abord les articles des plus anciennes commandes(premier entrée premier sorti).mais tout marche bien qd il y a que deux commande(deux enregistrement ds la requete)mais des qu il y en a plus de 2 ça me donne plus du tout le bon resultat. voici mon code :
'Requete permetant de calculer le stock restant pour l'entrée la moins recente
StrSql1 = "SELECT [Transactions inventaire].DateTransaction, [Transactions inventaire].RéfBonCommande, [Transactions inventaire].RéfProduit, [Transactions inventaire].UnitésEntrées, [Transactions inventaire].Qsoldées, [Transactions inventaire]!UnitésEntrées-[Transactions inventaire]!Qsoldées AS Stock, [Transactions inventaire].Pxunitaire " & _
"FROM Catégories RIGHT JOIN (Produits INNER JOIN [Transactions inventaire] ON Produits.RéfProduit=[Transactions inventaire].RéfProduit) ON Catégories.RéfCatégorie=Produits.RéfCatégorie " & _
"WHERE [Transactions inventaire].RéfProduit = " & Me![RéfProduit] & " And ([Transactions inventaire]!UnitésEntrées-[Transactions inventaire]!Qsoldées)>0 " & _
"ORDER BY [Transactions inventaire].DateTransaction, [Transactions inventaire].RéfBonCommande;"

'Ouverture de la Requete ( voir requete Stockentréedatex)
Set rs1 = Application.CurrentDb.OpenRecordset(StrSql1)
Set rstable = Application.CurrentDb.OpenRecordset("Transactions inventaire", dbOpenTable)

rs1.MoveFirst

reste1 = rs1("Stock")
'MsgBox " " & CStr(reste1) 'espion pour le debugage(enlever le quote devant MsgBox)
MsgBox "stock avant boucle " & CStr(reste1)
Do Until Not reste = 0
MsgBox " reste avant if" & CStr(reste)
If reste <= rs1("Stock") Then
MsgBox "reste apres if" & CStr(reste) 'espion pour le debugage
rs1.Edit
rs1.Fields("Qsoldées") = rs1("Qsoldées") + reste 'affectation de la valeur
rs1.Update 'mise a jour
rstable.AddNew
rstable!DateTransaction = Me.DateTransaction
rstable!RéfProduit = Me.RéfProduit
rstable!RéfBonCommande = rs1("RéfBonCommande")
rstable!UnitésSortie = reste
rstable!Pxunitaire = rs1("Pxunitaire")
rstable!RéfLieuconso = lieu
rstable.Update
Exit Do
Else
rs1.Edit
rs1.Fields("Qsoldées") = rs1("Qsoldées") + rs1("Stock")
rs1.Update
rstable.AddNew
rstable!DateTransaction = Me.DateTransaction
rstable!RéfProduit = Me.RéfProduit
rstable!RéfBonCommande = rs1("RéfBonCommande")
rstable!UnitésSortie = reste1
rstable!Pxunitaire = rs1("Pxunitaire")
rstable!RéfLieuconso = lieu
rstable.Update
reste = reste - reste1
'MsgBox " " & CStr(reste) 'espion pour le debugage
rs1.MoveNext
End If
Loop
Me.Commandes.Requery
End If
rs1.Close
Set rs1 = Nothing

End Sub
c'est au niveau du if que cela ne fonctionne plus il fait tout le temps le else meme qd la condition est vrai.
je ne comprend plus rien.
je ne vois pa pourquoi il fonctionne qd il y a 2 enregistrement et pas pour 3. merci de votre aide.
A voir également:

1 réponse

Jean-François Pillou Messages postés 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 273
19 mai 2005 à 18:35
Merci d'utiliser le bouton "Code" du forum lorsque tu ajoute un morceau de code à ton message, sinon c'est illisible !
0