سلام
دوست عزیز اتفاقا من در پروژه «داروخانه» با این چنین مشکلی روبرو بودم.
برای اینکار باید اول ببینید که موجودی کالای x در انبار چقدر هست. اگر به اندازهای که میخواستید وجود داشت باید بر اساس تاریخهای خرید بصورت نزولی اقدام به کم کردن موجودی هر خرید نمائید. بعنوان مثال چنانچه خریدی با انقضای 2 ماه دیگر و موجودی 7 بسته و خرید دیگری با انقضای 8 ماه دیگر و 20 بسته در انبار باشد و شما بمقدار 10 بسته بخواهید از انبار خارج کنید، باید ابتدا موجودی انبار را بصورت صعودی مرتب کنی و رکوردهای حاضر را پیمایش کنی تا به مقدار 20 بسته برسی. اینکار با یک حقله Do بدین صورت امکان پذیر است(بدنه اصلی برنامه):
Count = 20
Do
If rst!Cnt < 20 Then
Count = Count - rst!Cnt
rst!Cnt = 0
Else
rst!Cnt = rst!Cnt - Count
Count = 0
End If
rst.MoveNext
Loop While Count > 0