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

Foksh

الخبراء
  • Posts

    2991
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    117

كل منشورات العضو Foksh

  1. شهادة اعتز بها من أستاذ فاضل كأمثالك أخي @ابو عارف 😇 وأشكرك على إطرائك الرائع ، محاولتي في إيجاد الحل الذي يرضيني كانت بعد محاولات الفشل الذي جرتني في طريقها والعثرات التي كنت أدور في متاهتها , كنت أحوم سابقاً كما أسلفت حول أن المشكلة في كيفية قراءة التاريخ بالنسبة لتعدد واجهات أوفيس المختلفة إلى أن هداني الله إلى الدالة CLng لحل مشكلتي .. شكراً لك مرة أخرى وتقبل الله طاعاتكم وصالح أعمالكم ، وبعيدكم أسأل الله أن يهنأكم .
  2. بعد تجربة الإقتراح الذي تم اختياره من قبل أستاذنا @أبوبسمله على عدة تنسيقات للتاريخ كانت النتيجة أنه لا يقوم بالمهمة المطلوبة عند اختلاف تنسيق التاريخ حسب النظام . المقترح التالي هو :- Dat = DateAdd("m", i, Me.Month_From) rst.FindFirst "[Payment_Month]=" & CLng(Dat) لماذا هذا الكود أدق ؟ يستخدم Date مباشرة دون تحويله إلى نص ، مما يضمن أن آكسيس يفهمه كتاريخ وليس كنص قد يسبب أخطاء CLng(Dat) يحول التاريخ إلى الرقم التسلسلي الداخلي الذي يخزنه آكسيس ، مما يزيل أي مشاكل تتعلق بالتنسيق لا يعتمد على إعدادات النظام ( سواءً كان mm/dd/yyyy أو dd/mm/yyyy ) ، لأن آكسيس يخزن التواريخ كأرقام وليس كنصوص لذا قمت بالبحث والتمحيص بأكثر من أسلوب وعدم اعتمادي للكود المقترح من طرف أستاذنا القدير أبو بسمله دون تجربة متعددة الخيارات ؟؟ لماذا الكود التالي أقل دقة ؟ Dat = Format(DateAdd("m", i, Me.Month_From), "yyyy-mm-dd") rst.FindFirst "[Payment_Month]=" & Format$(Dat, "\#mm\/dd\/yyyy\#") Format(DateAdd(...), "yyyy-mm-dd") يحوّل التاريخ إلى نص ، آكسيس لا يتعامل مع "yyyy-mm-dd" كتاريخ افتراضياً ، مما قد يؤدي إلى أخطاء عند البحث Format$(Dat, "\#mm\/dd\/yyyy\#") يحاول فرض التنسيق ، لكنه يعمل فقط إذا كانت الإعدادات الإقليمية للنظام متوافقة معه إذا كان النظام يستخدم dd/mm/yyyy ، فقد يفشل البحث بسبب اختلاف ترتيب اليوم والشهر يعتمد على إعدادات النظام ، مما قد يجعله غير متوقع في بعض الأجهزة 📌 النتيجة النهائية :- ✅ الكود الذي اقترحته حالياً (CLng(Dat)) أكثر دقة لأنه يعتمد على القيم الرقمية للتواريخ في آكسيس ❌ الكود المقترح سابقاً أقل موثوقية لأنه يعتمد على تحويل التاريخ إلى نص وقد يتأثر بإعدادات النظام 💥 وباختصار شديد :- استخدام CLng(Dat) أفضل لأنه :- يتعامل مع التاريخ كقيمة رقمية داخلية (Serial Date) يتجنب مشاكل تنسيق التاريخ المرتبطة بالإعدادات الإقليمية أكثر كفاءة في الأداء لأنه يقارن أرقام وليس نصوص يعكس طريقة تخزين آكسيس الفعلية للتواريخ داخلياً استخدام Format أقل دقة لأنه :- يحول التاريخ إلى نص (string) يعتمد على الإعدادات الإقليمية للنظام قد يسبب أخطاء عند اختلاف تنسيق التاريخ بين الأنظمة يحتاج إلى معالجة إضافية للتأكد من صحة التنسيق 📛 ملاحظة :- انا لا أبحث عن أفضل إجابة بقدر ما أبحث عن حل لمشكلة من جميع النواحي 😊 تأجيل الاقتطاع.zip
  3. العفو منك أخي الكريم ، لم أقصد شيئاً من كلامي .. لاحظ انني قمت بتغيير وتعديل المشاركة للكود الي اقترحته .. هل تقصد المشكلة التي هي حذف قيمة الاقتطاع الشهري للسجل الأول ؟؟؟؟؟؟؟؟؟؟
  4. 🙄 أعلم ما الفرق أخي الكريم بينهما ,, على العموم ما يهمني - ولغاية في نفسي ليس إلا - هو تجربة الكودين فقط لا غير . * تم تعديل الكود الرئيسي للتأجيل * وادعم تعليقك والنتيجة بصورة مرفقة اذا سمحت .
  5. كلا يا صديقي ، في التنسيق تم التبديل بين dd-mm-yyyy ليصبح التعديل = mm-dd-yyyy ويختلفان في التنسيق بين عرض الشهر أولا أم اليوم !!!!
  6. لا أشعر باليأس ولله الحمد ، ولكني فعلاً في أحد الصور التي قمت بتصويرها لاحظت هذه المشكلة فعلاً ، وعليه جرب هذا التعديل الأخير لي فقد قمت بتجربة الكود أكثر من 9 مرات على أكثر من نسخة أوفيس ولم تظهر المشكلة السابقة خلاف موضوع تصفير قيمة الاقتطاع الشهري للسجل الأول ، أما فيما يخص هذه المشكلة الثانية ، فهي في الحدث الخاص عند تحميل النموذج .. لذا سأرفق تعديل آخر للحدث فقم بتجربته ,, فلا ضرر في التجربة 😅 . Private Sub cmd_Do_Changes_Click() Dim rst As DAO.Recordset Dim Dat As Date Dim Remarks As String Dim i As Integer Me.Month_From = DateSerial(Year(Me.Month_From), Month(Me.Month_From), 1) If Me.Month_From < Me.DiscountStartDate Then MsgBox "آسف, شهر التأجيل الذي أدخلته أصغر من شهر بداية الإقتطاع" & vbCrLf & _ "يرجى التصحيح وحاول مرة أخرى" Exit Sub ElseIf Me.Month_From > Me.DiscountEndDate Then MsgBox "آسف, شهر التأجيل الذي أدخلته أكبر من شهر نهاية أخر إقتطاع" & vbCrLf & _ "يرجى التصحيح وحاول مرة أخرى" Exit Sub End If If Me.OpenArgs = "frmCridi" Then MySQL = "Select * From tbl_Loans Where Loan_ID = " & Me.Loan_ID & " And Loan_Type='Cridi'" Loan_Type = "Cridi" r = "" Else MySQL = "Select * From tbl_Loans Where Loan_ID = " & Me.Loan_ID & " And Loan_Type='Elec'" Loan_Type = "Elec" r = "" End If Set rst = CurrentDb.OpenRecordset(MySQL) For i = 0 To Me.Number_Of_Months - 1 Dat = Format(DateAdd("m", i, Me.Month_From), "mm/dd/yyyy") rst.FindFirst "[Payment_Month]=#" & Dat & "#" If Not rst.NoMatch Then Remarks = rst!Remarks rst.Edit rst!Loan_Made = 0 rst!Remarks = Remarks & " | " & "تأجيل الإقتطاع إلى تاريخ " & Format(DateAdd("m", i + 1, Me.DiscountEndDate), "mm/dd/yyyy") rst!wada3 = "تم التأجيل" rst.Update End If rst.AddNew rst!EmployeeID = Me.EmployeeID rst!Loan_ID = Me.Loan_ID rst!Auto_Date = Me.AwardMonth rst!Payment_Month = DateAdd("m", i + 1, Me.DiscountEndDate) rst!Loan_Made = Me.DiscountPerMonth rst!Loan_Type = Loan_Type rst!Remarks = Remarks rst!annee = Year(Date) rst.Update Next i rst.Close: Set rst = Nothing Forms!frmCridi!Frm_sub!DiscountEndDate = DateAdd("m", Me.Number_Of_Months, Forms!frmCridi!Frm_sub!DiscountEndDate) Forms!frmCridi!Frm_sub!Obsérvation = Forms!frmCridi!Frm_sub!Obsérvation & " | " & _ "تأجيل الإقتطاع لمدة " & GetMoisName(i) I2 = Forms!frmCridi!Frm_sub!ID Forms!frmCridi!Frm_sub.Form.Requery Set rst = Forms!frmCridi!Frm_sub.Form.RecordsetClone rst.FindFirst "[ID]=" & I2 Forms!frmCridi!Frm_sub.Form.Bookmark = rst.Bookmark MsgBox ("تم تأجيل الإقتطاع لمدة " & GetMoisName(i)) DoCmd.Close End Sub في حدث عند التحميل للنموذج Frm_Loans :- Private Sub Form_Load() If Form_FrmCridi.Frm = "Cridi" Then If Not IsNull(Me.Payment_Made) Then If Me.Payment_Made.Value = 0 And Not IsNull(Me.Payment_Made) Then Me.Payment_Made.Value = Me.Payment_Made.Value End If End If Me.txt1.Value = Nz(DSum("[Loan_Made]", "tbl_Loans", "[EmployeeID]=" & Me.EmployeeID & " AND [Loan_ID] = " & Me.Loan_ID & " AND [Loan_Type]='Cridi'"), 0) Me.txt2.Value = Nz(DSum("[Payment_Made]", "tbl_Loans", "[EmployeeID]=" & Me.EmployeeID & " AND [Loan_ID] = " & Me.Loan_ID & " AND [Loan_Type]='Cridi'"), 0) Me.txt3.Value = Nz(DSum("[Loan_Remise]", "tbl_Loans", "[EmployeeID]=" & Me.EmployeeID & " AND [Loan_ID] = " & Me.Loan_ID & " AND [Loan_Type]='Cridi'"), 0) Me.txt_tot.Value = Me.txt1.Value - Me.txt2.Value - Me.txt3.Value Else If Not IsNull(Me.Payment_Made) Then If Me.Payment_Made.Value = 0 And Not IsNull(Me.Payment_Made) Then Me.Payment_Made.Value = Me.Payment_Made.Value End If End If End If End Sub
  7. وعليكم السلام ورحمة الله وبركاته ,, عيدكم مبارك جميعاً ، واسمحوا لي بمشاركة أخي الأستاذ @Eng.Qassim .. فكرتي البسيطة والتي لا تـُـنقِص من جهده ولا تـُـزايد عليه ، وإنما طريقة أخرى دون الحاجة الى عمليات حسابية في الاستعلام .. SELECT Tbl_IN_OUT.ID, Tbl_IN_OUT.Nname, Tbl_IN_OUT.Start_Day, Tbl_IN_OUT.End_Day, Int(DateDiff('n',[Start_Day],[End_Day])/1440) & " يوم و" & Int((DateDiff('n',[Start_Day],[End_Day]) Mod 1440)/60) & " ساعات و" & DateDiff('n',[Start_Day],[End_Day]) Mod 60 & " دقائق و" & DateDiff('s',[Start_Day],[End_Day]) Mod 60 & " ثانية" AS [الفرق الزمني], Int(DateDiff('n',[Start_Day],[End_Day])/1440) AS الأيام, Int((DateDiff('s',[Start_Day],[End_Day]) Mod 86400)/3600) AS الساعات, Int((DateDiff('s',[Start_Day],[End_Day]) Mod 3600)/60) AS الدقائق, DateDiff('s',[Start_Day],[End_Day]) Mod 60 AS الثواني FROM Tbl_IN_OUT; حيث صب تركيزي على استخدام الدالة DateDiff المخصصة لحساب الفروق الزمنية ، لعرض الفرق بين الوقتين كسلسلة نصية كاملة + وحدات زمنية منفصلة ( أيام ، ساعات ، دقائق ، ثواني ) .
  8. جزاك الله كل الخير اخي وأستاذنا @أبوبسمله ، فعلاً في إحدى المحاولات تطرقت لموضوع التنسيق للتاريخ ، وكان محور التفكير والشك ، إلا أن إجابة الأستاذ @ابو عارف شككتني وجعلتني أعيد النظر وابتعد عن ظني بتنسيق التاريخ . بارك الله فيكم وبأستاذنا ومعلمنا @jjafferr على موضوعه المميز 😇 . أحييكم مرة أخى على انتباهكم لهذه النقطة ، وكنت قد وددت تجربة آخر محاولاتي دون الحاجة لكود تنسيق التاريخ وإخباري بالنتيجة 😅 .
  9. أشكر أخي العزيز @أبوبسمله على جهوده المتميزة 🤗 . وارجو إرفاق الكود هنا للإستفادة بسبب عدم تواجدي أمام الكمبيوتر 😇 .
  10. أخي الكريم ليس الأمر بالعصا السحرية ، بقدر ما هي المشكلة - ولدي حدس كبير - بأنها تكمن في نسخة الأوفيس .. على العموم لديك 3 حلول على ما اعتقد وقد ارفقت الكثير من الصور التي سجلتها بشكل مباشر من واقع تجاربي السابقة ، وإن رغبت فالحلول الأخيرة أيضاً لا بأس بتصويرها إن وددت
  11. قد استعجبت من الملف والنتائج المتفاوتة بين أكثر من مستخدم .. ولذلك ، جرب هذا التعديل التالي :- Private Sub cmd_Do_Changes_Click() On Error GoTo Err_Handler Dim rst As DAO.Recordset Dim db As DAO.Database Dim Dat As Date Dim Remarks As String Dim i As Integer Dim Loan_Type As String Dim MySQL As String Dim NewPaymentMonth As Date Dim ExistingRecord As Boolean Dim DiscountEndDate As Date Dim ObsText As String Dim RecID As Long Me.Month_From = DateSerial(Year(Me.Month_From), Month(Me.Month_From), 1) If Me.Month_From < Me.DiscountStartDate Then MsgBox "آسف, شهر التأجيل الذي أدخلته أصغر من شهر بداية الإقتطاع" & vbCrLf & _ "يرجى التصحيح وحاول مرة أخرى", vbExclamation + vbMsgBoxRight, "" Exit Sub ElseIf Me.Month_From > Me.DiscountEndDate Then MsgBox "آسف, شهر التأجيل الذي أدخلته أكبر من شهر نهاية آخر إقتطاع" & vbCrLf & _ "يرجى التصحيح وحاول مرة أخرى", vbExclamation + vbMsgBoxRight, "" Exit Sub End If If Me.OpenArgs = "frmCridi" Then Loan_Type = "Cridi" Else Loan_Type = "Elec" End If MySQL = "SELECT * FROM tbl_Loans WHERE Loan_ID = " & Me.Loan_ID & " AND Loan_Type='" & Loan_Type & "'" Set db = CurrentDb Set rst = db.OpenRecordset(MySQL, dbOpenDynaset) For i = 0 To Me.Number_Of_Months - 1 Dat = DateAdd("m", i, Me.Month_From) NewPaymentMonth = DateAdd("m", i + 1, Me.DiscountEndDate) ExistingRecord = False If Not rst.BOF And Not rst.EOF Then rst.MoveFirst rst.FindFirst "[Payment_Month]=#" & Dat & "#" If Not rst.NoMatch Then ExistingRecord = True End If End If If ExistingRecord Then Remarks = Nz(rst!Remarks, "") rst.Edit rst!Loan_Made = 0 rst!Remarks = Remarks & " | تأجيل الإقتطاع إلى " & NewPaymentMonth rst!wada3 = "تم التأجيل" rst.Update End If rst.AddNew rst!EmployeeID = Me.EmployeeID rst!Loan_ID = Me.Loan_ID rst!Auto_Date = Me.AwardMonth rst!Payment_Month = NewPaymentMonth rst!Loan_Made = Me.DiscountPerMonth rst!Loan_Type = Loan_Type rst!Remarks = Remarks rst!annee = Year(Date) rst.Update Next i DiscountEndDate = DateAdd("m", Me.Number_Of_Months, Forms!frmCridi!Frm_sub!DiscountEndDate) Forms!frmCridi!Frm_sub!DiscountEndDate = DiscountEndDate ObsText = Nz(Forms!frmCridi!Frm_sub!Obsérvation, "") & " | تأجيل الإقتطاع لمدة " & Me.Number_Of_Months & " أشهر" Forms!frmCridi!Frm_sub!Obsérvation = ObsText RecID = Nz(Forms!frmCridi!Frm_sub!ID, 0) Forms!frmCridi!Frm_sub.Form.Requery Set rst = Forms!frmCridi!Frm_sub.Form.RecordsetClone If RecID <> 0 Then rst.FindFirst "[ID]=" & RecID If Not rst.NoMatch Then Forms!frmCridi!Frm_sub.Form.Bookmark = rst.Bookmark End If End If MsgBox "تم تأجيل الإقتطاع لمدة " & Me.Number_Of_Months & " أشهر بنجاح", vbInformation + vbMsgBoxRight, "" rst.Close: Set rst = Nothing Set db = Nothing DoCmd.Close Exit_Sub: Exit Sub Err_Handler: MsgBox "حدث خطأ", vbCritical + vbMsgBoxRight, "" Resume Exit_Sub End Sub جربه وأخبرني بالنتيجة للمتابعة 😇 . تأجيل الاقتطاع.zip ==================== وأيضاً قد توجهت الى حل وطريق آخر مختلف نوعاً ما .. جرب الكود التالي أيضاً بدون مرفق حتى لا تتوه الأفكار منك كثيراً :- Private Sub cmd_Do_Changes_Click() On Error GoTo Err_Handler Dim rst As DAO.Recordset Dim db As DAO.Database Dim Dat As Date Dim Remarks As String Dim i As Integer Dim Loan_Type As String Dim MySQL As String Dim NewPaymentMonth As Date Dim ExistingRecord As Boolean Dim DiscountEndDate As Date Dim ObsText As String Dim RecID As Long Me.Month_From = DateSerial(Year(Me.Month_From), Month(Me.Month_From), 1) If Me.Month_From < Me.DiscountStartDate Then MsgBox "آسف, شهر التأجيل الذي أدخلته أصغر من شهر بداية الإقتطاع" & vbCrLf & _ "يرجى التصحيح وحاول مرة أخرى", vbExclamation + vbMsgBoxRight, "" Exit Sub ElseIf Me.Month_From > Me.DiscountEndDate Then MsgBox "آسف, شهر التأجيل الذي أدخلته أكبر من شهر نهاية آخر إقتطاع" & vbCrLf & _ "يرجى التصحيح وحاول مرة أخرى", vbExclamation + vbMsgBoxRight, "" Exit Sub End If If Me.OpenArgs = "frmCridi" Then Loan_Type = "Cridi" Else Loan_Type = "Elec" End If MySQL = "SELECT * FROM tbl_Loans WHERE Loan_ID = " & Me.Loan_ID & " AND Loan_Type='" & Loan_Type & "'" Set db = CurrentDb Set rst = db.OpenRecordset(MySQL, dbOpenDynaset) For i = 0 To Me.Number_Of_Months - 1 Dat = DateAdd("m", i, Me.Month_From) NewPaymentMonth = DateAdd("m", i + 1, Me.DiscountEndDate) ExistingRecord = False If Not rst.BOF And Not rst.EOF Then rst.MoveFirst rst.FindFirst "[Payment_Month]=#" & Dat & "#" If Not rst.NoMatch Then ExistingRecord = True End If End If If ExistingRecord Then Remarks = Nz(rst!Remarks, "") rst.Edit rst!Loan_Made = 0 rst!Remarks = Remarks & " | تأجيل الإقتطاع إلى " & NewPaymentMonth rst!wada3 = "تم التأجيل" rst.Update End If rst.AddNew rst!EmployeeID = Me.EmployeeID rst!Loan_ID = Me.Loan_ID rst!Auto_Date = Me.AwardMonth rst!Payment_Month = NewPaymentMonth rst!Loan_Made = Me.DiscountPerMonth rst!Loan_Type = Loan_Type rst!Remarks = Remarks rst!annee = Year(Date) rst.Update Next i DiscountEndDate = DateAdd("m", Me.Number_Of_Months, Forms!frmCridi!Frm_sub!DiscountEndDate) Forms!frmCridi!Frm_sub!DiscountEndDate = DiscountEndDate ObsText = Nz(Forms!frmCridi!Frm_sub!Obsérvation, "") & " | تأجيل الإقتطاع لمدة " & Me.Number_Of_Months & " أشهر" Forms!frmCridi!Frm_sub!Obsérvation = ObsText RecID = Nz(Forms!frmCridi!Frm_sub!ID, 0) Forms!frmCridi!Frm_sub.Form.Requery Set rst = Forms!frmCridi!Frm_sub.Form.RecordsetClone If RecID <> 0 Then rst.FindFirst "[ID]=" & RecID If Not rst.NoMatch Then Forms!frmCridi!Frm_sub.Form.Bookmark = rst.Bookmark End If End If MsgBox "تم تأجيل الإقتطاع لمدة " & Me.Number_Of_Months & " أشهر بنجاح", vbInformation + vbMsgBoxRight, "" rst.Close: Set rst = Nothing Set db = Nothing DoCmd.Close Exit_Sub: Exit Sub Err_Handler: MsgBox "حدث خطأ", vbCritical + vbMsgBoxRight, "" Resume Exit_Sub End Sub
  12. قم أولا بالغاء أفضل إجابة يا صديقي ، حتى تجد حل للمشكلة التي لا اعلم ما هو سببها في جهازك .. ثانياً الصور التي ارفقتها جميعها من جهازين مختلفين و 3 نسخ أوفيس مختلفة ( 2016 ، 2010 و 2019 ) أضف الى ذلك ، الحدث الذي تستخدمه عند فتح النموذج في الصورة المرفقة التالية ، قد يكون أحد أسباب الخلل في البيانات التي يتم عرضها فيه
  13. 💯/💯 وطبعاً إضافتك جعلت الفكرة شاملة لجميع أنواع البيانات
  14. باعتقادي ودون الحاجة الى التوسعات في الإحتمالات ، المشكلة تكمن في السطر التالي :- Dim DB As Database, rs As Recordset بأن يتم التعديل كالتالي :- Dim DB As DAO.Database, rs As DAO.Recordset هذا من وجهة نظري المتواضعة فقط لا غير 😁 . وكل عام وأنتم بخير جميعاً
  15. بعد هذه الصورة لا اعتقد انه يوجد لدي ما أزيد به .. تم التنفيذ والتجربة على نسخة أوفيس 2010 !! رغم انها على إصدار 2019 أيضاً كانت النتيجة كما في الصور التي ارفقتها سابقاً .. ولكن قد تكون المشكلة كما خطر لي بأن تكون في تنسيق التاريخ وباختلاف نمط التاريخ .. على العموم جرب المرفق وأخبرنا بالنتيجة 👀 . تأجيل الاقتطاع.zip
  16. أخي @طاهر اوفيسنا ، أولاً تقبل الله طاعاتكم ، وكل عام وأنتم بخير ,, جرب التعديل التالي بإزالة التنسيق من التاريخ فقط !! Private Sub cmd_Do_Changes_Click() Dim rst As DAO.Recordset Dim Dat As Date Dim Remarks As String Dim i As Integer Me.Month_From = DateSerial(Year(Me.Month_From), Month(Me.Month_From), 1) If Me.Month_From < Me.DiscountStartDate Then MsgBox "آسف, شهر التأجيل الذي أدخلته أصغر من شهر بداية الإقتطاع" & vbCrLf & _ "يرجى التصحيح وحاول مرة أخرى" Exit Sub ElseIf Me.Month_From > Me.DiscountEndDate Then MsgBox "آسف, شهر التأجيل الذي أدخلته أكبر من شهر نهاية أخر إقتطاع" & vbCrLf & _ "يرجى التصحيح وحاول مرة أخرى" Exit Sub End If If Me.OpenArgs = "frmCridi" Then MySQL = "Select * From tbl_Loans Where Loan_ID = " & Me.Loan_ID & " And Loan_Type='Cridi'" Loan_Type = "Cridi" r = "" Else MySQL = "Select * From tbl_Loans Where Loan_ID = " & Me.Loan_ID & " And Loan_Type='Elec'" Loan_Type = "Elec" r = "" End If Set rst = CurrentDb.OpenRecordset(MySQL) For i = 0 To Me.Number_Of_Months - 1 Dat = DateAdd("m", i, Me.Month_From) rst.FindFirst "[Payment_Month]=#" & Dat & "#" If Not rst.NoMatch Then Remarks = rst!Remarks rst.Edit rst!Loan_Made = 0 rst!Remarks = Remarks & " | " & "تأجيل الإقتطاع إلى تاريخ " & DateAdd("m", i + 1, Me.DiscountEndDate) rst.Update End If rst.AddNew rst!EmployeeID = Me.EmployeeID rst!Loan_ID = Me.Loan_ID rst!Auto_Date = Me.AwardMonth rst!Payment_Month = DateAdd("m", i + 1, Me.DiscountEndDate) rst!Loan_Made = Me.DiscountPerMonth rst!Loan_Type = Loan_Type rst!Remarks = Remarks rst!annee = Year(Date) rst.Update Next i rst.Close: Set rst = Nothing Forms!frmCridi!Frm_sub!DiscountEndDate = DateAdd("m", Me.Number_Of_Months, Forms!frmCridi!Frm_sub!DiscountEndDate) Forms!frmCridi!Frm_sub!Obsérvation = Forms!frmCridi!Frm_sub!Obsérvation & " | " & _ "تأجيل الإقتطاع لمدة " & GetMoisName(i) I2 = Forms!frmCridi!Frm_sub!ID Forms!frmCridi!Frm_sub.Form.Requery Set rst = Forms!frmCridi!Frm_sub.Form.RecordsetClone rst.FindFirst "[ID]=" & I2 Forms!frmCridi!Frm_sub.Form.Bookmark = rst.Bookmark MsgBox ("تم تأجيل الإقتطاع لمدة " & GetMoisName(i)) DoCmd.Close End Sub تأجيل الاقتطاع.zip
  17. نرجوا منكم أخي @أبو أحمد الفاضل ، تقييم أفضل إجابة لصاحب الحل ، وليس لردكم الكريم 😇 .
  18. عيدكم مبارك جميعاً ، وتقبل الله منا ومنكم صالح الأعمال والطاعات 🤲🏻.
  19. حسناً ، سأحاول غداً تثبيت نسخة اوفيس 2010 ، وتجربة المرفق على إصدار آخر والعمل على التعديل بناءً عليه .. مع انني لا اعلم ما هو سبب اختلاف النتيجة بين الإصدارين .
  20. نرجو من احد الإخوة والاساتذة الذي يمرون من هنا تجربة المرفق واخبارنا بالنتيجة .. تأجيل الاقتطاع.zip
  21. وعليكم السلام ورحمة الله وبركاته .. ارجو منك ان لا تبخل على نفسك بالشرح الوافي للمشكلة .!!!! في اي استعلام تحدث مشكلتك ، ما طبيعة المشكلة بالتفصيل ..... الخ كما ان العنوان مخالف لسياسة المنتدى وقوانينه
×
×
  • اضف...

Important Information