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.