اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر

السلام عليكم اساتذني الكرام

بعد التعديل الذي تم في المشاركة

من هنا

ولما طلب مني اقتطاع شهر مارس 2025

وجدت ان الأغلبية لا يقتطع لهم مبلغ الإخراط 1500.00

فهمت ان الكود المعدل لا يؤدي وظيفته على احسن مايرام

' .......................... الشطر الثاني اقتطاع الانخراط
                'Other loans for March (3) and July (7)
                If Month(Now()) = 3 Or Month(Now()) = 7 Then
                    Dim rstE As DAO.Recordset
                    Set rst = CurrentDb.OpenRecordset("Select * From tbl_Loans")
                    myCriteria = "[detach]= 'موظف' "
                    myCriteria = myCriteria & " Or [detach]= 'متعاقد توقيت كامل' "
                    myCriteria = myCriteria & " Or [detach]= 'عامل متعاقد توقيت جزئي' "
                    myCriteria = myCriteria & " Or [detach]= 'حارس متعاقد توقيت جزئي' "
                    myCriteria = myCriteria & " Or [detach]= 'عون نظافه وتطهير' "
                    'myCriteria = myCriteria & " Or [detach]='منتدب'"
                    
                    Set rstE = CurrentDb.OpenRecordset("Select * From Employee Where " & myCriteria)
                    rstE.MoveLast: rstE.MoveFirst
                    Rc = rstE.RecordCount
                    
                    For i = 1 To Rc
                        If Month(Now()) = 3 Then
                            If Nz(DLookup("Payment_Made", "tbl_Loans", "EmployeeID=" & rstE!EmployeeID & _
                                " And [Payment_Made]=3000 And [Payment_Month] Between #1/1/" & Year(Now()) & "# And #2/28/" & Year(Now()) & "#"), 0) = 3000 Then
                                rstE.MoveNext
                                GoTo NextEmployee
                            End If
                        End If

                        If Month(Now()) = 7 Then
                            If Nz(DLookup("Payment_Made", "tbl_Loans", "EmployeeID=" & rstE!EmployeeID & _
                                " And [Payment_Made]=3000 And [Payment_Month] Between #4/1/" & Year(Now()) & "# And #6/30/" & Year(Now()) & "#"), 0) = 3000 Then
                                rstE.MoveNext
                                GoTo NextEmployee
                            End If
                        End If

                        rst.FindFirst "[Loan_Type]='Inkhirat' And [EmployeeID]=" & rstE!EmployeeID & " And [Payment_Month]=#" & Me.TxtMonth & "#"
                        If rst.NoMatch Then
                            rst.AddNew
                            a2 = 1
                            rst!EmployeeID = rstE!EmployeeID
                            rst!Loan_ID = 0
                            rst!Payment_Month = DateSerial(Year(Me.TxtMonth), Month(Me.TxtMonth), 1)
                            rst!Payment_Made = DLookup("Other_Value", "TblOther", "ID=1")
                            rst!Loan_Type = "Inkhirat"
                            rst!Nr = GetNumDetach(rst!EmployeeID)
                            rst!Remarks = "إقتطاع من الراتب لإنخراط شهر " & Year(Me.TxtMonth) & "/" & Month(Me.TxtMonth)
                            rst!annee = Year(DATE)
                            If rst!Loan_Type = "Inkhirat" Then rst!sadad = rst!Payment_Made
                            If rst!sadad.Value = True Then
                                rst!wada3 = "تم الإنخراط"
                            Else
                                rst!wada3 = "لم يتم الإنخراط"
                            End If
                        End If

ارجو منكم  ايجاد المشكل

2025-03-01_19-54-24.jpg.8563b25804c49e965fcfc37a611218ba.jpg

 

20250301.rar

قام بنشر

للتوضيح اكثر خلال شهر مارس 2025 العمال كريمو67 و 144و 160 و265 يقتطع لهم 0,00 اما العمال  ارقام 68-145-161-219-221- 259 هؤلاء الكود لا يقتطع لهم نهائيا بل يتخطاهم وهم معنيون بالاقتطاع 1500

20250301.rar

قام بنشر (معدل)

أخي الكريم وعليكم السلام ورحمة الله وبركاته ..

للأسف ما زلت تكرر نفس الخطأ بعدم الشرح الكافي كنقطة أولى .

 

 

 

تم تعديل بواسطه Foksh
قام بنشر
11 دقائق مضت, طاهر اوفيسنا said:

شهر مارس القادم

Help.thumb.gif.f20b53f61b0e4741efa70754f27388a6.gif

التقرير يعرض فقط شهر شباط / فبراير 

قام بنشر (معدل)
8 دقائق مضت, Foksh said:

التقرير يعرض فقط شهر شباط / فبراير 

اي استاذ ماينفعش هكذا  ادخل على التقرير مباشرة وادخل التاريخ 2025/03/01 وسترى النتيجة

مارس2025.png

تم تعديل بواسطه طاهر اوفيسنا
  • Confused 1
قام بنشر
1 ساعه مضت, Foksh said:

التقرير يعرض فقط شهر شباط / فبراير

استاذ الان لاحظت ان التقرير يظهر بالاعلى شهر فبراير ولكن مضمون اقتطاعه شهر مارس لاحظ عند اقتطاع الانخراط تجد مبلغ 1500 معناه شهر مارس لان فبراير نجدها كلها 0.00 الا حالات الدفع الخاصة

قام بنشر
1 ساعه مضت, طاهر اوفيسنا said:

استاذ الان لاحظت ان التقرير يظهر بالاعلى شهر فبراير ولكن مضمون اقتطاعه شهر مارس لاحظ عند اقتطاع الانخراط تجد مبلغ 1500 معناه شهر مارس لان فبراير نجدها كلها 0.00 الا حالات الدفع الخاصة

انظر لهذا العامل تم دفع الانخراط ....

وانت طالب في موضوع سابق ان يتم تجاوز العامل الذي دفع 3000 لذلك تم تجاوزهم من دفع الانخراط

 

1.jpg

2.png

قام بنشر (معدل)
منذ ساعه, kanory said:

انظر لهذا العامل تم دفع الانخراط ....

شكرا استاذ على الاهتمام فعلا هو مستثنى من الاقتطاع واشرت له في الرد السادس بالصور باللون الاخضر مافيش مشكلة بهذا المشكلة في باقي العمال لم يدفعو المبلغ ولم يتم الاقتطاع التلقائي لهم خلال مارس وهذا بيت القصيد

تم تعديل بواسطه طاهر اوفيسنا
قام بنشر
24 دقائق مضت, طاهر اوفيسنا said:

شكرا استاذ على الاهتمام فعلا هو مستثنى من الاقتطاع واشرت له في الرد الشادي بالصور باللون الاخضر مافيش مشكلة بهذا المشكلة في باقي العمال لم يدفعو المبلغ ولم يتم الاقتطاع التلقائي لهم خلال مارس وهذا بيت القصيد

طيب حبه حبه 

الان كريمو٦٧ أليس دافع للانخراط من خلال الصورة الأولى ... لاحظ الصورة الاولى

قام بنشر (معدل)
22 دقائق مضت, kanory said:

الان كريمو٦٧ أليس دافع للانخراط من خلال الصورة الأولى ... لاحظ الصورة الاولى

  استاذ نحكي على العمود 5 في الصورة هو المعني بالاقتطاع او دفع الاشتراك السنوي اما العامل رقم 67 ومبلغ 3000فهو اقتطاع القروض200.png.27e43ff3b4804b032312af4aeef60d44.png

تم تعديل بواسطه طاهر اوفيسنا
قام بنشر (معدل)

توضيح الاساتذة الذين لم يفهمو طلبي

- بعد التعديل الاخير على كود الاقتطاع

( 1- بالنسبة لاقتطاعات القروض عادية وبدون مشاكل 

2- بالنسبة لاستنثاء الذين دفعو مبلغ الانخراط كاملا خلال شهري 1 و 2 عادي بدون اي مشكل)

المشكلة في ان الكود إستثني إقتطاع مبلغ "الانخراط" لبعض العمال

بالرغم من انهم معنيون بالاقتطاع لمبلغ 1500 لشهر مارس لسنة 2025 في الجدول tbl_Loans

منهم من وضع لهم 0.00 ومنهم من تخطاهم نهائيا 
ارجو اني وفقت في التوضيح 

تم تعديل بواسطه طاهر اوفيسنا
قام بنشر (معدل)
2 ساعات مضت, طاهر اوفيسنا said:

وضيح الاساتذة الذين لم يفهمو طلبي

- بعد التعديل الاخير على كود الاقتطاع

( 1- بالنسبة لاقتطاعات القروض عادية وبدون مشاكل 

2- بالنسبة لاستنثاء الذين دفعو مبلغ الانخراط كاملا خلال شهري 1 و 2 عادي بدون اي مشكل)

المشكلة في ان الكود إستثني إقتطاع مبلغ "الانخراط" لبعض العمال

بالرغم من انهم معنيون بالاقتطاع لمبلغ 1500 لشهر مارس لسنة 2025 في الجدول tbl_Loans

منهم من وضع لهم 0.00 ومنهم من تخطاهم نهائيا 
ارجو اني وفقت في التوضيح 

اهلا بك ......
جرب هذا ....

If Month(Now()) = 3 Or Month(Now()) = 7 Then
    Dim db As DAO.Database
    Dim rstE As DAO.Recordset, rst As DAO.Recordset
    Dim myCriteria As String, TheSum As Double, PaymentCheck As Variant
    Dim SelectedYear As Integer
    
    Set db = CurrentDb
    
    ' استخراج السنة من التكست بوكس
    SelectedYear = Year(Now())
    
    ' تحديد معايير الموظفين
    myCriteria = "[detach] IN ('موظف', 'عامل متعاقد توقيت كامل', 'عامل متعاقد توقيت جزئي', 'حارس متعاقد توقيت جزئي', 'عون نظافه وتطهير')"
    
    ' فتح سجل الموظفين المطابقين للمعايير
    Set rstE = db.OpenRecordset("SELECT * FROM Employee WHERE " & myCriteria, dbOpenDynaset)
    
    If Not rstE.EOF Then rstE.MoveFirst
    
    Do Until rstE.EOF
        ' التحقق من المدفوعات السابقة مع تصفية `wada3 = "تم الإنخراط"`
        If Month(Now()) = 3 Then
            PaymentCheck = Nz(DSum("Payment_Made", "tbl_Loans", "EmployeeID=" & rstE!EmployeeID & _
                " AND [Payment_Month] BETWEEN #" & DateSerial(SelectedYear, 1, 1) & "# AND #" & DateSerial(SelectedYear, 2, 28) & "# AND [wada3]='تم الإنخراط'"), 0)
        Else
            PaymentCheck = Nz(DSum("Payment_Made", "tbl_Loans", "EmployeeID=" & rstE!EmployeeID & _
                " AND [Payment_Month] BETWEEN #" & DateSerial(SelectedYear, 4, 1) & "# AND #" & DateSerial(SelectedYear, 6, 30) & "# AND [wada3]='تم الإنخراط'"), 0)
        End If

        ' إذا كان الموظف قد دفع بالفعل 3000 أو أكثر، انتقل إلى الموظف التالي
        If PaymentCheck >= 3000 Then GoTo NextEmployee

        ' فتح سجل القروض وإضافة اقتطاع جديد إذا لم يكن موجودًا
        Set rst = db.OpenRecordset("tbl_Loans", dbOpenDynaset)
        rst.FindFirst "[Loan_Type]='Inkhirat' AND [EmployeeID]=" & rstE!EmployeeID & " AND [Payment_Month]=#" & Format(CDate(Me.txtMonth), "mm/dd/yyyy") & "#"
        
        If rst.NoMatch Then
            rst.AddNew
            rst!EmployeeID = rstE!EmployeeID
            rst!Loan_ID = 0
            'rst!Payment_Month = DateSerial(Year(CDate(Me.txtMonth)), Month(CDate(Me.txtMonth)), 1)
            rst!Payment_Month = DateSerial(Year(Me.txtMonth), Month(Me.txtMonth), 1)
            rst!Payment_Made = DLookup("Other_Value", "TblOther", "ID=1")
            rst!Loan_Type = "Inkhirat"
            rst!Nr = GetNumDetach(rst!EmployeeID)
            rst!Remarks = "إقتطاع من الراتب لإنخراط شهر " & Year(CDate(Me.txtMonth)) & "/" & Month(CDate(Me.txtMonth))
            rst!annee = SelectedYear
            rst!sadad = rst!Payment_Made
            rst!wada3 = IIf(rst!sadad > 0, "تم الإنخراط", "لم يتم الإنخراط")
            rst.Update

            TheSum = TheSum + Nz(rst!Payment_Made, 0)
        End If
        
        rst.Close
        
NextEmployee:
        rstE.MoveNext
    Loop
    
    rstE.Close: Set rstE = Nothing
    db.Close: Set db = Nothing
    
    ' تنسيق وعرض المجموع
    TheSum = Format(TheSum, "#,##0.00")
    MsgBox "تم توزيع الإقتطاعات" & vbCrLf & vbCrLf & "مجموع الإقتطاعات = " & TheSum, , "إقتطاعات شهر " & FrenchMonth(Month(CDate(Me.txtDate))) & SelectedYear
End If

 

تم تعديل بواسطه Barna
قام بنشر

اساتذتي الكرام اليست المشكلة في

 rst!Nr = GetNumDetach(rst!EmployeeID)

علما ان دالة GetNumDetach هي كمايلي

Function GetNumDetach(emp As Variant) As Integer
Dim rst As DAO.Recordset

If IsNull(emp) Or emp = 0 Then
GetNumDetach = 16
Else
Set rst = CurrentDb.OpenRecordset("SELECT TblDetaché.Nr, Employee.EmployeeID FROM TblDetaché INNER JOIN Employee ON TblDetaché.detach = Employee.detach WHERE Employee.EmployeeID =" & emp)
GetNumDetach = rst!Nr
rst.Close
Set rst = Nothing
End If

End Function

 

قام بنشر

المشكلة في التحقق كان الكود يتحقق من كل سجلات المنخرط سواءا كانت مدفوعات او انخراط 
 

 ' التحقق من المدفوعات السابقة مع تصفية `wada3 = "تم الإنخراط"`
        If Month(Now()) = 3 Then
            PaymentCheck = Nz(DSum("Payment_Made", "tbl_Loans", "EmployeeID=" & rstE!EmployeeID & _
                " AND [Payment_Month] BETWEEN #" & DateSerial(SelectedYear, 1, 1) & "# AND #" & DateSerial(SelectedYear, 2, 28) & "# AND [wada3]='تم الإنخراط'"), 0)
        Else
            PaymentCheck = Nz(DSum("Payment_Made", "tbl_Loans", "EmployeeID=" & rstE!EmployeeID & _
                " AND [Payment_Month] BETWEEN #" & DateSerial(SelectedYear, 4, 1) & "# AND #" & DateSerial(SelectedYear, 6, 30) & "# AND [wada3]='تم الإنخراط'"), 0)
        End If

 

4 دقائق مضت, طاهر اوفيسنا said:

اساتذتي الكرام اليست المشكلة في

 rst!Nr = GetNumDetach(rst!EmployeeID)

علما ان دالة GetNumDetach هي كمايلي

Function GetNumDetach(emp As Variant) As Integer
Dim rst As DAO.Recordset

If IsNull(emp) Or emp = 0 Then
GetNumDetach = 16
Else
Set rst = CurrentDb.OpenRecordset("SELECT TblDetaché.Nr, Employee.EmployeeID FROM TblDetaché INNER JOIN Employee ON TblDetaché.detach = Employee.detach WHERE Employee.EmployeeID =" & emp)
GetNumDetach = rst!Nr
rst.Close
Set rst = Nothing
End If

End Function

جرب ايقافها وحاول ... اذا كانت النتيجة مرضية لك ... فخير وبركة

 

  • Like 1
قام بنشر (معدل)
في 17‏/2‏/2025 at 21:52, Barna said:

هلا بك ......
جرب هذا ....

شكرا استاذ 

نسخت الكود وجربت ولكن ظهر هذا الميساج علما ان الكود به شطر اخر بالاعلى (المرفق يحتوي على الكود كامل)

2025-03-02_22-00-38.jpg.1e302c6af61720b97ba7a4c62383d3e7.jpg

كود.rar

تم تعديل بواسطه طاهر اوفيسنا
قام بنشر
3 دقائق مضت, طاهر اوفيسنا said:

شكرا استاذ 

نسخت الكود وجربت ولكن ظهر هذا الميساج

2025-03-02_22-00-38.jpg.1e302c6af61720b97ba7a4c62383d3e7.jpg

انت لم تنسخ وتلصق الكود كاملا ................

 

1.jpg

قام بنشر

هذا الكود المطلوب نسخه

 

22 دقائق مضت, Barna said:

اهلا بك ......
جرب هذا ....

If Month(Now()) = 3 Or Month(Now()) = 7 Then
    Dim db As DAO.Database
    Dim rstE As DAO.Recordset, rst As DAO.Recordset
    Dim myCriteria As String, TheSum As Double, PaymentCheck As Variant
    Dim SelectedYear As Integer
    
    Set db = CurrentDb
    
    ' استخراج السنة من التكست بوكس
    SelectedYear = Year(Now())
    
    ' تحديد معايير الموظفين
    myCriteria = "[detach] IN ('موظف', 'عامل متعاقد توقيت كامل', 'عامل متعاقد توقيت جزئي', 'حارس متعاقد توقيت جزئي', 'عون نظافه وتطهير')"
    
    ' فتح سجل الموظفين المطابقين للمعايير
    Set rstE = db.OpenRecordset("SELECT * FROM Employee WHERE " & myCriteria, dbOpenDynaset)
    
    If Not rstE.EOF Then rstE.MoveFirst
    
    Do Until rstE.EOF
        ' التحقق من المدفوعات السابقة مع تصفية `wada3 = "تم الإنخراط"`
        If Month(Now()) = 3 Then
            PaymentCheck = Nz(DSum("Payment_Made", "tbl_Loans", "EmployeeID=" & rstE!EmployeeID & _
                " AND [Payment_Month] BETWEEN #" & DateSerial(SelectedYear, 1, 1) & "# AND #" & DateSerial(SelectedYear, 2, 28) & "# AND [wada3]='تم الإنخراط'"), 0)
        Else
            PaymentCheck = Nz(DSum("Payment_Made", "tbl_Loans", "EmployeeID=" & rstE!EmployeeID & _
                " AND [Payment_Month] BETWEEN #" & DateSerial(SelectedYear, 4, 1) & "# AND #" & DateSerial(SelectedYear, 6, 30) & "# AND [wada3]='تم الإنخراط'"), 0)
        End If

        ' إذا كان الموظف قد دفع بالفعل 3000 أو أكثر، انتقل إلى الموظف التالي
        If PaymentCheck >= 3000 Then GoTo NextEmployee

        ' فتح سجل القروض وإضافة اقتطاع جديد إذا لم يكن موجودًا
        Set rst = db.OpenRecordset("tbl_Loans", dbOpenDynaset)
        rst.FindFirst "[Loan_Type]='Inkhirat' AND [EmployeeID]=" & rstE!EmployeeID & " AND [Payment_Month]=#" & Format(CDate(Me.txtMonth), "mm/dd/yyyy") & "#"
        
        If rst.NoMatch Then
            rst.AddNew
            rst!EmployeeID = rstE!EmployeeID
            rst!Loan_ID = 0
            'rst!Payment_Month = DateSerial(Year(CDate(Me.txtMonth)), Month(CDate(Me.txtMonth)), 1)
            rst!Payment_Month = DateSerial(Year(Me.txtMonth), Month(Me.txtMonth), 1)
            rst!Payment_Made = DLookup("Other_Value", "TblOther", "ID=1")
            rst!Loan_Type = "Inkhirat"
            rst!Nr = GetNumDetach(rst!EmployeeID)
            rst!Remarks = "إقتطاع من الراتب لإنخراط شهر " & Year(CDate(Me.txtMonth)) & "/" & Month(CDate(Me.txtMonth))
            rst!annee = SelectedYear
            rst!sadad = rst!Payment_Made
            rst!wada3 = IIf(rst!sadad > 0, "تم الإنخراط", "لم يتم الإنخراط")
            rst.Update

            TheSum = TheSum + Nz(rst!Payment_Made, 0)
        End If
        
        rst.Close
        
NextEmployee:
        rstE.MoveNext
    Loop
    
    rstE.Close: Set rstE = Nothing
    db.Close: Set db = Nothing
    
    ' تنسيق وعرض المجموع
    TheSum = Format(TheSum, "#,##0.00")
    MsgBox "تم توزيع الإقتطاعات" & vbCrLf & vbCrLf & "مجموع الإقتطاعات = " & TheSum, , "إقتطاعات شهر " & FrenchMonth(Month(CDate(Me.txtDate))) & SelectedYear
End If

 

 

مكان كود الشرط الثاني لديك

قام بنشر
في 17‏/2‏/2025 at 21:57, Barna said:

جرب ايقافها وحاول ... اذا كانت النتيجة مرضية لك ... فخير وبركة

تم توقيفها

' rst!Nr = GetNumDetach(rst!EmployeeID)

 

ولكن لم تحل المشكلة

قام بنشر

مصدر التقرير استعلام ؟؟؟

واذا كان نعم ، هل الكود مرتبط بالاستعلام مصدر التقرير ؟؟

قام بنشر (معدل)
5 ساعات مضت, Foksh said:

مصدر التقرير استعلام ؟؟؟

واذا كان نعم ، هل الكود مرتبط بالاستعلام مصدر التقرير ؟؟

كود الاقتطاع يعمل مع الجدول Employee و  tbl_Loansمباشرة استاذ

تم تعديل بواسطه طاهر اوفيسنا
قام بنشر

السلام عليكم

بالرغم انى مش فاهم الموضوع الى الان ومشتت فالتركيز فيه

الا انى اعتقد ان مشكلتك فالاسطر التاليه من الكود

 If Month(Now()) = 3 Then
                            If Nz(DLookup("Payment_Made", "tbl_Loans", "EmployeeID=" & rstE!EmployeeID & _
                                " And [Payment_Made]=3000 And [Payment_Month] Between #1/1/" & Year(Now()) & "# And #2/28/" & Year(Now()) & "#"), 0) = 3000 Then
                                rstE.MoveNext
                                GoTo NextEmployee
                            End If
                        End If

                        If Month(Now()) = 7 Then
                            If Nz(DLookup("Payment_Made", "tbl_Loans", "EmployeeID=" & rstE!EmployeeID & _
                                " And [Payment_Made]=3000 And [Payment_Month] Between #4/1/" & Year(Now()) & "# And #6/30/" & Year(Now()) & "#"), 0) = 3000 Then
                                rstE.MoveNext
                                GoTo NextEmployee
                            End If
                        End If

 

والسبب فى اعتقادى انك قلت سابقا ممكن يدفع 3000 على مرتين او مره واحده

وهنا داله dlookup بتشيك على سجل واحد بناء عالفتره اللى انت محددها وبيكون مساوى ل 3000 

يعنى هو دفع 3000 فى شهر 3 او 7 تجاوز الموظف ده وليس مجموع ماتم دفعه 3000 لهذا الموظف

وهل الدفع فى خلال العام كله ام فالشهرين اللى قبل 3 و 7 بس

 

  • Like 1
قام بنشر (معدل)
26 دقائق مضت, أبوبسمله said:

وهل الدفع فى خلال العام كله ام فالشهرين اللى قبل 3 و 7 بس

شكرا استاذ على مرورك الطيب استاذ التعديل يشتغل طبقا لما تم طلبه في  الموضوع الماضي ولكن عند التجريب حاليا وبالاخص في اقتطاع شهر مارس 2025 قام الكود باستثناء بعض العمال لم يقتطع لهم مبلغ الانخراط لشهر مارس 2025 والمقدر ب 1500 وهذا هو المشكل (لماذا التعديل على الكود يستثنى عمال وهم في الحقيقة تتوفر فيهم شروط الاقتطاع؟)نتمنى من يجد لي حلا في القريب  العاجل لاني ملزم بدفع الاقتطاع الخاص بشهر مارس في اقرب وقت

تم تعديل بواسطه طاهر اوفيسنا

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information