كريمو2 قام بنشر الأربعاء at 19:49 قام بنشر الأربعاء at 19:49 السلام عليكم اساتذة نريد من يساعدني في انشاء وحدة نمطية او التعديل على الدالة المرفقة مهمتها ان تظهر ميساج في حال استدعائها بالفورم بشروط 1- الانخراط يكون اما بدفع القيمة كاملة مرة واحدة ( 3000 دج ) حلال السنة اي من شهر 01 الى شهر 08 2- وإما المبلغ ( 3000 دج ) يكون على ذفعتين اي (1500 دج) خلال شهر 3 و ( 1500 دج) خلال شهر 7 3- في حالة تم التسديد بستفيد المنحرط من كل المزايا 4- في حالة عدم التسديد لا يستفيد المعني بأي امتياز وهنا يظهر المبساج "عزيزي العامل لا يمكنك الإستفادة من الإمتيازات لأنك لم تدفع مبلغ الإنخراط " وشكرا علما لديا هذه الدالة ولكن لاتؤدي وظيفتها على مايرام Public Function GetInkhirat(ByRef ID As Integer) As Integer On Error GoTo err_GetInkhirat Dim rst As DAO.Recordset Dim MySQL As String MySQL = "" MySQL = "SELECT DISTINCT(annee) FROM tbl_Loans " MySQL = MySQL & "WHERE EmployeeID = " & ID & "And Loan_ID = 0 " MySQL = MySQL & "GROUP BY annee" Set rst = CurrentDb.OpenRecordset(MySQL) rst.MoveLast: rst.MoveFirst Rec = rst.RecordCount GetInkhirat = Rec rst.Close: Set rst = Nothing Exit Function err_GetInkhirat: If Err.Number = 3021 Then 'Or Err.Number = 3061 Then 'ignor, No Record Resume Next Else MsgBox Err.Number & vbCrLf & Err.Description End If End Function Public Function GetOther(ByRef ID As Integer) As Boolean On Error GoTo err_GetOther Dim rst As DAO.Recordset Dim MySQL As String Dim sadad As Boolean Dim anne As Integer If Month(Date) < 3 Then anne = Year(Date) - 1 Else anne = Year(Date) End If sadad = IIf(DLookup("sadad", "tbl_Loans", "EmployeeID =" & ID & " And Year(tbl_Loans.Auto_Date) =" & anne) = True, True, False) If sadad = False Then Choix = 0: Exit Function Choix = 1 If Month(Date) <= 3 Then: GetOther = True: Exit Function MySQL = "" MySQL = "SELECT tbl_Loans.Auto_ID, tbl_Loans.EmployeeID, tbl_Loans.Auto_Date, tbl_Loans.Loan_Type, tbl_Loans.Remarks, Year(tbl_Loans.Auto_Date) AS Dats" MySQL = MySQL & " FROM tbl_Loans" MySQL = MySQL & " WHERE tbl_Loans.Loan_Type ='Inkhirat'" MySQL = MySQL & " And tbl_Loans.EmployeeID =" & ID MySQL = MySQL & " And Year(tbl_Loans.Auto_Date) =" & Year(Date) MySQL = MySQL & " ORDER BY tbl_Loans.Auto_Date" 'Debug.Print MySQL Set rst = CurrentDb.OpenRecordset(MySQL) rst.MoveLast: rst.MoveFirst Rec = rst.RecordCount If Month(Date) = 7 Then tot = DSum("Payment_Made", "tbl_Loans", "EmployeeID = " & ID & " And Year(Auto_Date) = " & Year(Date)) = 3000 If Not tot Then GetOther = False: Exit Function End If If Rec = 0 Then GetOther = False Else GetOther = True End If 'Debug.Print Adding rst.Close: Set rst = Nothing Exit Function err_GetOther: If Err.Number = 3021 Then 'Or Err.Number = 3061 Then 'ignor, No Record Resume Next Else MsgBox Err.Number & vbCrLf & Err.Description End If End Function
Barna قام بنشر الأربعاء at 21:20 قام بنشر الأربعاء at 21:20 منذ ساعه, كريمو2 said: السلام عليكم اساتذة نريد من يساعدني في انشاء وحدة نمطية او التعديل على الدالة المرفقة مهمتها ان تظهر ميساج في حال استدعائها بالفورم بشروط 1- الانخراط يكون اما بدفع القيمة كاملة مرة واحدة ( 3000 دج ) حلال السنة اي من شهر 01 الى شهر 08 2- وإما المبلغ ( 3000 دج ) يكون على ذفعتين اي (1500 دج) خلال شهر 3 و ( 1500 دج) خلال شهر 7 3- في حالة تم التسديد بستفيد المنحرط من كل المزايا 4- في حالة عدم التسديد لا يستفيد المعني بأي امتياز وهنا يظهر المبساج "عزيزي العامل لا يمكنك الإستفادة من الإمتيازات لأنك لم تدفع مبلغ الإنخراط " وشكرا علما لديا هذه الدالة ولكن لاتؤدي وظيفتها على مايرام Public Function GetInkhirat(ByRef ID As Integer) As Integer On Error GoTo err_GetInkhirat Dim rst As DAO.Recordset Dim MySQL As String MySQL = "" MySQL = "SELECT DISTINCT(annee) FROM tbl_Loans " MySQL = MySQL & "WHERE EmployeeID = " & ID & "And Loan_ID = 0 " MySQL = MySQL & "GROUP BY annee" Set rst = CurrentDb.OpenRecordset(MySQL) rst.MoveLast: rst.MoveFirst Rec = rst.RecordCount GetInkhirat = Rec rst.Close: Set rst = Nothing Exit Function err_GetInkhirat: If Err.Number = 3021 Then 'Or Err.Number = 3061 Then 'ignor, No Record Resume Next Else MsgBox Err.Number & vbCrLf & Err.Description End If End Function Public Function GetOther(ByRef ID As Integer) As Boolean On Error GoTo err_GetOther Dim rst As DAO.Recordset Dim MySQL As String Dim sadad As Boolean Dim anne As Integer If Month(Date) < 3 Then anne = Year(Date) - 1 Else anne = Year(Date) End If sadad = IIf(DLookup("sadad", "tbl_Loans", "EmployeeID =" & ID & " And Year(tbl_Loans.Auto_Date) =" & anne) = True, True, False) If sadad = False Then Choix = 0: Exit Function Choix = 1 If Month(Date) <= 3 Then: GetOther = True: Exit Function MySQL = "" MySQL = "SELECT tbl_Loans.Auto_ID, tbl_Loans.EmployeeID, tbl_Loans.Auto_Date, tbl_Loans.Loan_Type, tbl_Loans.Remarks, Year(tbl_Loans.Auto_Date) AS Dats" MySQL = MySQL & " FROM tbl_Loans" MySQL = MySQL & " WHERE tbl_Loans.Loan_Type ='Inkhirat'" MySQL = MySQL & " And tbl_Loans.EmployeeID =" & ID MySQL = MySQL & " And Year(tbl_Loans.Auto_Date) =" & Year(Date) MySQL = MySQL & " ORDER BY tbl_Loans.Auto_Date" 'Debug.Print MySQL Set rst = CurrentDb.OpenRecordset(MySQL) rst.MoveLast: rst.MoveFirst Rec = rst.RecordCount If Month(Date) = 7 Then tot = DSum("Payment_Made", "tbl_Loans", "EmployeeID = " & ID & " And Year(Auto_Date) = " & Year(Date)) = 3000 If Not tot Then GetOther = False: Exit Function End If If Rec = 0 Then GetOther = False Else GetOther = True End If 'Debug.Print Adding rst.Close: Set rst = Nothing Exit Function err_GetOther: If Err.Number = 3021 Then 'Or Err.Number = 3061 Then 'ignor, No Record Resume Next Else MsgBox Err.Number & vbCrLf & Err.Description End If End Function حسب فهمي ... جرب هذا Public Function CheckInkhirat(ByRef ID As Integer) As String On Error GoTo err_CheckInkhirat Dim yearNow As Integer Dim totalPaid As Currency Dim paymentMarch As Boolean Dim paymentJuly As Boolean ' تحديد السنة الحالية yearNow = Year(Date) ' إجمالي المبلغ المدفوع totalPaid = Nz(DSum("Payment_Made", "tbl_Loans", "EmployeeID = " & ID & " AND Year(Auto_Date) = " & yearNow), 0) ' التحقق من دفع المبلغ في مارس ويوليو paymentMarch = Nz(DLookup("Payment_Made", "tbl_Loans", "EmployeeID = " & ID & " AND Year(Auto_Date) = " & yearNow & " AND Month(Auto_Date) = 3"), 0) >= 1500 paymentJuly = Nz(DLookup("Payment_Made", "tbl_Loans", "EmployeeID = " & ID & " AND Year(Auto_Date) = " & yearNow & " AND Month(Auto_Date) = 7"), 0) >= 1500 ' التحقق من الشروط If totalPaid = 3000 Then CheckInkhirat = "عزيزي العامل، يمكنك الاستفادة من جميع الامتيازات لأنك دفعت مبلغ الانخراط كاملاً." ElseIf paymentMarch And paymentJuly Then CheckInkhirat = "عزيزي العامل، يمكنك الاستفادة من جميع الامتيازات لأنك دفعت مبلغ الانخراط كاملاً على دفعتين." Else CheckInkhirat = "عزيزي العامل، لا يمكنك الاستفادة من الامتيازات لأنك لم تدفع مبلغ الانخراط." End If Exit Function err_CheckInkhirat: MsgBox "خطأ رقم " & Err.Number & ": " & Err.Description, vbCritical, "خطأ" CheckInkhirat = "حدث خطأ أثناء التحقق من بيانات الانخراط." End Function يتم استدعاء الكود بهذا الشكل Dim result As String result = CheckInkhirat(EmployeeID) MsgBox result
كريمو2 قام بنشر منذ 22 ساعات الكاتب قام بنشر منذ 22 ساعات شكرا استاذي العزيز Barna على سرعة الرد لاحط كيفية تم استدعاء الكود Private Sub CmdMenha_AfterUpdate() Dim result As String result = CheckInkhirat(EmployeeID) MsgBox result If MsgBox("هل تريد تثبيت تاريخ المنحة", vbYesNo) = vbYes Then Me.AwardMonth = Date Menha_Value = CmdMenha.Column(2) Me.Obsérvation = Nom_Menha Me.annee = Year(AwardMonth) Else Me.Undo End If End Sub وصحيح يظهر MsgBox يالتنيبه ولكن عنذ الضغط على زر موافق يقوم باعطائه الامتياز فكيف يتم التعديل
Barna قام بنشر منذ 17 ساعات قام بنشر منذ 17 ساعات 4 ساعات مضت, كريمو2 said: شكرا استاذي العزيز Barna على سرعة الرد لاحط كيفية تم استدعاء الكود Private Sub CmdMenha_AfterUpdate() Dim result As String result = CheckInkhirat(EmployeeID) MsgBox result If MsgBox("هل تريد تثبيت تاريخ المنحة", vbYesNo) = vbYes Then Me.AwardMonth = Date Menha_Value = CmdMenha.Column(2) Me.Obsérvation = Nom_Menha Me.annee = Year(AwardMonth) Else Me.Undo End If End Sub وصحيح يظهر MsgBox يالتنيبه ولكن عنذ الضغط على زر موافق يقوم باعطائه الامتياز فكيف يتم التعديل جرب هذا Dim result As String ' استدعاء الدالة للتحقق من الانخراط result = CheckInkhirat(EmployeeID) ' عرض النتيجة في رسالة تنبيه MsgBox result, vbOKOnly + vbInformation, "تنبيه" ' طلب تأكيد تثبيت المنحة If MsgBox("هل تريد تثبيت تاريخ المنحة؟", vbYesNo + vbQuestion, "تأكيد") = vbYes Then ' إذا وافق المستخدم، يتم تثبيت التاريخ وإكمال العملية Me.AwardMonth = Date Me.Menha_Value = CmdMenha.Column(2) Me.Obsérvation = Nom_Menha Me.annee = Year(Me.AwardMonth) Else ' إذا رفض المستخدم، يتم التراجع عن أي تغييرات Me.Undo End If
كريمو2 قام بنشر منذ 16 ساعات الكاتب قام بنشر منذ 16 ساعات (معدل) منذ ساعه, Barna said: جرب هذا Dim result As String ' استدعاء الدالة للتحقق من الانخراط result = CheckInkhirat(EmployeeID) ' عرض النتيجة في رسالة تنبيه MsgBox result, vbOKOnly + vbInformation, "تنبيه" ' طلب تأكيد تثبيت المنحة If MsgBox("هل تريد تثبيت تاريخ المنحة؟", vbYesNo + vbQuestion, "تأكيد") = vbYes Then ' إذا وافق المستخدم، يتم تثبيت التاريخ وإكمال العملية Me.AwardMonth = Date Me.Menha_Value = CmdMenha.Column(2) Me.Obsérvation = Nom_Menha Me.annee = Year(Me.AwardMonth) Else ' إذا رفض المستخدم، يتم التراجع عن أي تغييرات Me.Undo End If لم يغير شيئا التعديل استاذ المطلوب عند ظهور الميساج الكود لايضبف سجل استفادة منحة يعني المطلوب عدم ظهور الميساج الثاني وهذا الاخير يتم ظهوره الا في حالة الاستفادة فقط اي المنخرط تم تعديل منذ 15 ساعات بواسطه كريمو2
Barna قام بنشر منذ 16 ساعات قام بنشر منذ 16 ساعات طيب جرب هذا Dim result As String Dim userResponse As VbMsgBoxResult ' استدعاء الدالة للتحقق من الانخراط result = CheckInkhirat(EmployeeID) ' عرض النتيجة في رسالة userResponse = MsgBox(result, vbOKOnly + vbInformation, "نتيجة التحقق") ' التحقق من استحقاق الامتياز قبل المتابعة If result Like "*يمكنك الاستفادة*" Then ' طلب تأكيد تثبيت المنحة If MsgBox("هل تريد تثبيت تاريخ المنحة؟", vbYesNo + vbQuestion, "تأكيد") = vbYes Then ' إذا وافق المستخدم، يتم تثبيت التاريخ وإكمال العملية Me.AwardMonth = Date Me.Menha_Value = CmdMenha.Column(2) Me.Obsérvation = Nom_Menha Me.annee = Year(Me.AwardMonth) Else ' إذا رفض المستخدم، يتم التراجع عن أي تغييرات Me.Undo End If Else ' إذا لم يتم استيفاء شروط الانخراط، لا يمكن تثبيت المنحة MsgBox "لا يمكنك تثبيت المنحة لأن شروط الانخراط غير مستوفاة.", vbExclamation, "تنبيه" End If
كريمو2 قام بنشر منذ 15 ساعات الكاتب قام بنشر منذ 15 ساعات نفس المشكلة اليك المرفق ركز مع الصورة المرفقة 20241128.rar
Barna قام بنشر منذ 13 ساعات قام بنشر منذ 13 ساعات الواضح من جدول الدفعات ان كريمو قد دفع المبلغ كاملا .... انظر والدليل غير الرقم 3000 الى 2000 انظر النتيجة
كريمو2 قام بنشر منذ 13 ساعات الكاتب قام بنشر منذ 13 ساعات (معدل) 01- قبل التعديل على الملف يجب مراعاة هذا الشرظ totalPaid = Nz(DSum("Payment_Made", "tbl_Loans", "EmployeeID = " & ID & " AND Year(Auto_Date) = " & yearNow), 0) كيف يتم زيادة هذا الشرط Loan_ID = 0 للدالة totalPaid علما ان الفلترة 0 يخص الانخراط فقط 02- كريمو 1 منخرط جرب في كريمو 2 او 3 تم تعديل منذ 13 ساعات بواسطه كريمو2
Barna قام بنشر منذ 13 ساعات قام بنشر منذ 13 ساعات 7 دقائق مضت, كريمو2 said: 01- قبل التعديل على الملف يجب مراعاة هذا الشرظ totalPaid = Nz(DSum("Payment_Made", "tbl_Loans", "EmployeeID = " & ID & " AND Year(Auto_Date) = " & yearNow), 0) كيف يتم زيادة هذا الشرط Loan_ID = 0 للدالة totalPaid علما ان الفلترة 0 يخص الانخراط فقط 02- كريمو01 منخرط جرب في كريمو 02 او 03 تم التجربة على كريمو 02 ظهرت رسالة اولى ثم موافق ظهرت الرسالة الاخيرة ... انظر .....
كريمو2 قام بنشر منذ 13 ساعات الكاتب قام بنشر منذ 13 ساعات (معدل) الرسالة الثانية لم تظهر لي استاذ عند التعديل تم تعديل منذ 13 ساعات بواسطه كريمو2
كريمو2 قام بنشر منذ 13 ساعات الكاتب قام بنشر منذ 13 ساعات والفيديو الثاني يبين دحول الكود الى تثبيت المنحة 2024-11-28_15-46-17.rar
Barna قام بنشر منذ 9 ساعات قام بنشر منذ 9 ساعات 3 ساعات مضت, كريمو2 said: انظر الفيديو 3 ساعات مضت, كريمو2 said: والفيديو الثاني يبين دحول الكود الى تثبيت المنحة طيب ... جرب كده ..... 20241128.mdb
كريمو2 قام بنشر منذ 9 ساعات الكاتب قام بنشر منذ 9 ساعات شكرا استاذ وهو كذلك ولكن الشرط Loan_ID = 0 لم تقم بإضافته للدالة totalPaid = Nz(DSum("Payment_Made", "tbl_Loans", "EmployeeID = " & ID & " AND Year(Auto_Date) = " & yearNow), 0) علما ان الجدول tbl_Loans فيه الانخراطات والقروض وغيرها يلزم الشرط
أفضل إجابة Barna قام بنشر منذ 8 ساعات أفضل إجابة قام بنشر منذ 8 ساعات 11 دقائق مضت, كريمو2 said: ولكن الشرط Loan_ID = 0 لم تقم بإضافته للدالة تفضل ...................... Public Function CheckInkhirat(ByRef ID As Integer) As String On Error GoTo err_CheckInkhirat Dim yearNow As Integer Dim totalPaid As Currency Dim paymentMarch As Boolean Dim paymentJuly As Boolean ' تحديد السنة الحالية yearNow = Year(Date) ' إجمالي المبلغ المدفوع ' totalPaid = Nz(DSum("Payment_Made", "tbl_Loans", "EmployeeID = " & ID & " AND Year(Auto_Date) = " & yearNow), 0) totalPaid = Nz(DSum("Payment_Made", "tbl_Loans", "EmployeeID = " & ID & " AND Year(Auto_Date) = " & yearNow & " AND Loan_ID = 0"), 0) ' التحقق من دفع المبلغ في مارس ويوليو paymentMarch = Nz(DLookup("Payment_Made", "tbl_Loans", "EmployeeID = " & ID & " AND Year(Auto_Date) = " & yearNow & " AND Month(Auto_Date) = 3"), 0) = 1500 paymentJuly = Nz(DLookup("Payment_Made", "tbl_Loans", "EmployeeID = " & ID & " AND Year(Auto_Date) = " & yearNow & " AND Month(Auto_Date) = 7"), 0) = 1500 ' التحقق من الشروط If totalPaid = 3000 And paymentMarch = False And paymentJuly = False Then CheckInkhirat = "عزيزي العامل، يمكنك الاستفادة من جميع الامتيازات لأنك دفعت مبلغ الانخراط كاملاً." ElseIf totalPaid = 3000 And paymentMarch = True And paymentJuly = True Then CheckInkhirat = "عزيزي العامل، يمكنك الاستفادة من جميع الامتيازات لأنك دفعت مبلغ الانخراط كاملاً على دفعتين." Else CheckInkhirat = "عزيزي العامل، لا يمكنك الاستفادة من الامتيازات لأنك لم تدفع مبلغ الانخراط." End If Exit Function err_CheckInkhirat: MsgBox "خطأ رقم " & Err.Number & ": " & Err.Description, vbCritical, "خطأ" CheckInkhirat = "حدث خطأ أثناء التحقق من بيانات الانخراط." End Function 1
كريمو2 قام بنشر منذ 8 ساعات الكاتب قام بنشر منذ 8 ساعات شكر استاذي العزيز Barna على المساعدة الله يجعلها في ميزان حسناتك كما نتمنى من إدارة المنتدي تصحيح العنوان لانه به اخطاء 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.