السلام عليكم ورحمة الله وبركاته
اشكركم على جهودكم الكبيره المبذوله في نشر العلم عن طريق هذا المنتدى الرائع
ووللعلم انا من القراء الدائمين لهذا القسم والحمد لله لقد استفدت الشيئ الكثير
لقد بحثت في هذا المنتدى عن طريقة خصم رصيد المواد حسب اقرب تاريخ انتهاء ووجدت هذا المثال
حاولت تطبيقه والتعديل عليه في البرنامج الذي اعمل عليه حاليا
حيث اني لا اريد ان افقد كمية المواد وذلك حتى يمكن الرجوع لها فيما اذا قرر صاحب البرنامج التراجع عن حركة الصادر ( حذفها يعني)
لذالك قمت بعمل Function
استخدمها في الإستعلام
ولكنها لم تعمل بالصوره المطلوبه
فأين المشكلة برأيكم :wacko:
**************
Public Function ExpairBalance(ItemCode As String, Qty As Integer, F As String) As String
Dim strSQl As String
Dim rec As New ADODB.Recordset
Dim Result As Long
Dim I As Integer
Dim CountQU As Long
Dim Result2 As Long
Dim w As Integer
Result = 0
If F = "OUT" Then
CountQU = DSum("[Quantity]", "QryINExpTotal", "ItemCode='" & ItemCode & "' AND Flage='" & "IN" & "'")
If CountQU < Qty Then
'If Me.Text29.Value < Me.Text21.Value Then
MsgBox "Quantity is Greater than the existing balance ( " & CountQU & ")"
Exit Function
End If
strSQl = "select CodeID, ItemCode, Flage, Quantity, ExpDate from QryINExpTotal "
strSQl = strSQl & " where ItemCode='" & ItemCode & "' AND Flage='" & "IN" & "'"
strSQl = strSQl & " order by ExpDate asc"
rec.Open strSQl, CurrentProject.Connection, adOpenKeyset, adLockReadOnly, adCmdText
For I = 1 To rec.RecordCount
'balance > Qty
If Val(Qty) > rec!Quantity Then
Result = Val(Qty) - rec!Quantity
Qty = Result
w = 0
DoCmd.SetWarnings False
'DoCmd.RunSQL "update tblExpairQty set Quantity =0 where CodeID=" & rec!CodeID
rec.MoveNext
ExpairBalance = w
If Result = 0 Then Exit Function
Else
'balance < QTY
Result2 = rec!Quantity - Val(Qty)
Qty = 0
w = Result2
DoCmd.SetWarnings False
' DoCmd.RunSQL "update QryINExpTotal set Quantity =" & Result & " where CodeID=" & rec!CodeID
If Qty = 0 Then Exit Function
End If
ExpairBalance = w
Next I
rec.Close
Set rec = Nothing
End If
End Function
*****************