Foksh قام بنشر الأحد at 13:57 قام بنشر الأحد at 13:57 8 دقائق مضت, طاهر اوفيسنا said: استاذ ي العزيز ممكن إرسال نسخة بها التأجيل اي اعمل تأجيل لمدة مثلا 3 اشهر ابتداء من تاريخ 2025/05/01 لكي اقارن ملاحظة غير تسمية النسخة لى اسم اخرا تأجيل الاقتطاع 3 أشهر.zip
طاهر اوفيسنا قام بنشر الأحد at 14:10 الكاتب قام بنشر الأحد at 14:10 هاو استاذ ماعملت شيء غير فتحت المرفق وهذا بعد المسح المعلومات المؤجلة وتنفيذ الكود بجهازي
Foksh قام بنشر الأحد at 14:39 قام بنشر الأحد at 14:39 (معدل) قم أولا بالغاء أفضل إجابة يا صديقي ، حتى تجد حل للمشكلة التي لا اعلم ما هو سببها في جهازك .. ثانياً الصور التي ارفقتها جميعها من جهازين مختلفين و 3 نسخ أوفيس مختلفة ( 2016 ، 2010 و 2019 ) أضف الى ذلك ، الحدث الذي تستخدمه عند فتح النموذج في الصورة المرفقة التالية ، قد يكون أحد أسباب الخلل في البيانات التي يتم عرضها فيه تم تعديل الأحد at 14:50 بواسطه Foksh 💥 توضيح بعض النقاط ..
طاهر اوفيسنا قام بنشر الأحد at 14:51 الكاتب قام بنشر الأحد at 14:51 بارك الله فيك استاذي العزيز Foksh نتمنى من الاخوة الاساتذة مراجعة الموضوع حتى يتسنى لنا الخروج بحل
Foksh قام بنشر الأحد at 21:03 قام بنشر الأحد at 21:03 (معدل) قد استعجبت من الملف والنتائج المتفاوتة بين أكثر من مستخدم .. ولذلك ، جرب هذا التعديل التالي :- 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 تم تعديل الأحد at 21:16 بواسطه Foksh
طاهر اوفيسنا قام بنشر الأحد at 21:27 الكاتب قام بنشر الأحد at 21:27 18 دقائق مضت, Foksh said: وأيضاً قد توجهت الى حل وطريق آخر مختلف نوعاً ما .. جرب الكود التالي أيضاً بدون مرفق حتى لا تتوه الأفكار منك كثيراً :- والله اتعبتك استاذي - سامحني - لا شي تغير فما مشكلة منعرف اين تكمن اساتذتي الكرام ارجو منكم ان تمرو على الموضوع عسى لديكم العصا السحرية لحل هذا الاشكال الذي ارهق الاستاذ Foksh وهو بدوره مابخل من تجارب وهو مشكور على ذلك وبارك الله فيه على المجهود المبذولة ولكن لم نصل معا الى حل نهائي
Foksh قام بنشر الأحد at 21:51 قام بنشر الأحد at 21:51 17 دقائق مضت, طاهر اوفيسنا said: اساتذتي الكرام ارجو منكم ان تمرو على الموضوع عسى لديكم العصا السحرية لحل هذا الاشكال الذي ارهق أخي الكريم ليس الأمر بالعصا السحرية ، بقدر ما هي المشكلة - ولدي حدس كبير - بأنها تكمن في نسخة الأوفيس .. على العموم لديك 3 حلول على ما اعتقد وقد ارفقت الكثير من الصور التي سجلتها بشكل مباشر من واقع تجاربي السابقة ، وإن رغبت فالحلول الأخيرة أيضاً لا بأس بتصويرها إن وددت
طاهر اوفيسنا قام بنشر الأحد at 22:09 الكاتب قام بنشر الأحد at 22:09 استاذي الكريم لقد جربت النسخة المعدلة على اكثر من جهاز طبعا الكل اوفيس 2010 و المشكلة واحدة واول مرة يواجهني هذا الشيء 😔
Foksh قام بنشر الأحد at 22:19 قام بنشر الأحد at 22:19 9 دقائق مضت, طاهر اوفيسنا said: استاذي الكريم لقد جربت النسخة المعدلة على اكثر من جهاز طبعا الكل اوفيس 2010 و المشكلة واحدة واول مرة يواجهني هذا الشيء 😔
طاهر اوفيسنا قام بنشر الأحد at 22:30 الكاتب قام بنشر الأحد at 22:30 استاذي هل لك نسخة اوفيس ,2010 جيدة ممكن تبعثها على الايمايل. taherlaguili@gmail.com
تمت الإجابة أبوبسمله قام بنشر الأحد at 22:48 تمت الإجابة قام بنشر الأحد at 22:48 السلام عليكم عيدكم مبارك مشاركه مع اخى واستاذى @Foksh جزاه الله خيرا وتعديل ع مرفقه بعد السموحه طبعا اخى @طاهر اوفيسنا جرب المرفق التالى واخبرنا بالنتيجه اولا تأجيل الاقتطاع_1.mdb
طاهر اوفيسنا قام بنشر بالامس في 07:22 الكاتب قام بنشر بالامس في 07:22 8 ساعات مضت, أبوبسمله said: جرب المرفق التالى واخبرنا بالنتيجه اولا وهو كذلك تم بفضل الله وبخبرة الاستاذ الفاضل أبوبسمله حل المشكلة التي ارهقت الاستاذ Foksh ربي يخفظه عيدكم مبارك وكل عام وانت بالف خير وربي يحفظك وشكرا على مرورك الطيب فما اشكالية بسيطة حسب الصورة ياريت طلة جديدة في تنفيذ الكود 1
Foksh قام بنشر بالامس في 07:28 قام بنشر بالامس في 07:28 (معدل) أشكر أخي العزيز @أبوبسمله على جهوده المتميزة 🤗 . وارجو إرفاق الكود هنا للإستفادة بسبب عدم تواجدي أمام الكمبيوتر 😇 . تم تعديل بالامس في 10:12 بواسطه Foksh 1
أبوبسمله قام بنشر بالامس في 10:21 قام بنشر بالامس في 10:21 الشكر لله ثم لاخى العزيز @Foksh فالكود كوده وهو من اجابك فعليا والاشكاليه المعروفه والتى هى مصدر المتاعب فعليا التواريخ وتنسيقاتها ولذلك يوجد وحده نمطيه للخروج من هذه الاشكاليه قد ارفقها اخى واستاذى الغالى @jjafferr جزاه الله عنا كل خير ومن يومها يا بستخدمها يا بستخدم الفورمات منها وسوف ارفق الرابط لها التعديل على السطر التالى rst.FindFirst "[Payment_Month]=#" & Dat & "#" الى rst.FindFirst "[Payment_Month]=" & Format$(Dat, "\#mm\/dd\/yyyy\#") والرابط التالى للمتابعه اخى @طاهر اوفيسنا بالنسبه للاشكاليه التى ارفقتها فالتاريخ موجود كما بالصوره فى اصل المرفق الذى قمت بانزاله انا والتعديل عليه والكود ليس له علاقه به لا من قريب ولا من بعيد قم بتنزيل المرفق وتعديل التاريخ الى 1 وجرب مره اخرى واخبرنا وكل عام وانتم بخير 1
Foksh قام بنشر بالامس في 11:06 قام بنشر بالامس في 11:06 40 دقائق مضت, أبوبسمله said: الشكر لله ثم لاخى العزيز @Foksh فالكود كوده وهو من اجابك فعليا جزاك الله كل الخير اخي وأستاذنا @أبوبسمله ، فعلاً في إحدى المحاولات تطرقت لموضوع التنسيق للتاريخ ، وكان محور التفكير والشك ، إلا أن إجابة الأستاذ @ابو عارف شككتني وجعلتني أعيد النظر وابتعد عن ظني بتنسيق التاريخ . بارك الله فيكم وبأستاذنا ومعلمنا @jjafferr على موضوعه المميز 😇 . أحييكم مرة أخى على انتباهكم لهذه النقطة ، وكنت قد وددت تجربة آخر محاولاتي دون الحاجة لكود تنسيق التاريخ وإخباري بالنتيجة 😅 .
طاهر اوفيسنا قام بنشر بالامس في 12:07 الكاتب قام بنشر بالامس في 12:07 1 ساعه مضت, أبوبسمله said: اخى @طاهر اوفيسنا بالنسبه للاشكاليه التى ارفقتها فالتاريخ موجود كما بالصوره فى اصل المرفق الذى قمت بانزاله انا والتعديل عليه والكود ليس له علاقه به لا من قريب ولا من بعيد قم بتنزيل المرفق وتعديل التاريخ الى 1 وجرب مره اخرى واخبرنا وكل عام وانتم بخير شكرا استاذ فعلا التاريخ لما صححته وعاودت تنفيذ الكود رجع عادي اما المبلغ مزال فيه اشكالية ولكن مايحرني المجموع 10.000.00بالاسفل معناه المبلغ المحذوف محسوب
Foksh قام بنشر بالامس في 14:33 قام بنشر بالامس في 14:33 (معدل) 3 ساعات مضت, طاهر اوفيسنا said: فعلا التاريخ لما صححته وعاودت تنفيذ الكود رجع عادي اما المبلغ مزال فيه اشكالية ولكن مايحرني المجموع 10.000.00بالاسفل معناه المبلغ المحذوف محسوب لا أشعر باليأس ولله الحمد ، ولكني فعلاً في أحد الصور التي قمت بتصويرها لاحظت هذه المشكلة فعلاً ، وعليه جرب هذا التعديل الأخير لي فقد قمت بتجربة الكود أكثر من 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 تم تعديل بالامس في 15:32 بواسطه Foksh تعديل الكود الأصلي و إضافة كود لحدث عند التحميل للنموذج Frm_Loans
طاهر اوفيسنا قام بنشر بالامس في 15:04 الكاتب قام بنشر بالامس في 15:04 (معدل) 30 دقائق مضت, Foksh said: لا أشعر باليأس ولله الحمد ، ولكني فعلاً في أحد الصور التي قمت بتصويرها لاحظت هذه المشكلة فعلاً ، وعليه جرب هذا التعديل الأخير لي فقد قمت بتجربة الكود أكثر من 9 مرات على أكثر من نسخة أوفيس ولم تظهر المشكلة معي ,, لذا لا ضرر في التجربة 😅 . شكرا استاذي الكريم على الاهتمام اظن ان الكود الذي ارفقته قديم اي قبل التعديل الذي لاخطناه من طرف الاستاذ ابو البسملة 4 ساعات مضت, أبوبسمله said: rst.FindFirst "[Payment_Month]=" & Format$(Dat, "\#mm\/dd\/yyyy\#") لاني رجعنا الى نفس المشكلة هذا من جهة ومن جهة ارسلي كود التعديل فقط بخصوص مسح المبلغ اي اين تم التعديل من حضرتك استاذي العزيز تم تعديل بالامس في 15:04 بواسطه طاهر اوفيسنا
Foksh قام بنشر بالامس في 15:08 قام بنشر بالامس في 15:08 2 دقائق مضت, طاهر اوفيسنا said: اظن ان الكود الذي ارفقته قديم اي قبل التعديل الذي لاخطناه من طرف الاستاذ ابو البسملة 4 ساعات مضت, أبوبسمله said: كلا يا صديقي ، في التنسيق تم التبديل بين dd-mm-yyyy ليصبح التعديل = mm-dd-yyyy ويختلفان في التنسيق بين عرض الشهر أولا أم اليوم !!!!
طاهر اوفيسنا قام بنشر بالامس في 15:18 الكاتب قام بنشر بالامس في 15:18 5 دقائق مضت, Foksh said: كلا يا صديقي ، في التنسيق تم التبديل بين dd-mm-yyyy ليصبح التعديل = mm-dd-yyyy ويختلفان في التنسيق بين عرض الشهر أولا أم اليوم !!!! 39 دقائق مضت, Foksh said: Dat = Format(DateAdd("m", i, Me.Month_From), "mm-dd-yyyy") rst.FindFirst "[Payment_Month]=#" & Dat & "#" انظر الفرق بين تنسيقك بالاعلى وتنسيق الاستاذ ابو البسملة بالاسقل صديقي Dat = Format(DateAdd("m", i, Me.Month_From), "yyyy-mm-dd") rst.FindFirst "[Payment_Month]=" & Format$(Dat, "\#mm\/dd\/yyyy\#")
Foksh قام بنشر بالامس في 15:21 قام بنشر بالامس في 15:21 (معدل) 14 دقائق مضت, طاهر اوفيسنا said: انظر الفرق بين تنسيقك بالاعلى وتنسيق الاستاذ ابو البسملة بالاسقل صديقي 🙄 أعلم ما الفرق أخي الكريم بينهما ,, على العموم ما يهمني - ولغاية في نفسي ليس إلا - هو تجربة الكودين فقط لا غير . * تم تعديل الكود الرئيسي للتأجيل * وادعم تعليقك والنتيجة بصورة مرفقة اذا سمحت . تم تعديل بالامس في 15:34 بواسطه Foksh إضافة تعليق للدلالة على تعديل مشاركة سابقة ، لغاية في نفسي
طاهر اوفيسنا قام بنشر بالامس في 15:44 الكاتب قام بنشر بالامس في 15:44 15 دقائق مضت, Foksh said: أعلم ما الفرق أخي الكريم بينهما ,, على العموم ما يهمني استاذي الكريم انت تخاطب مبتدي بالدرجة المتوسطة في الاكسس ولست خبير ثانيا : عند التجربة وبالكود الذي ارفقته رجعت لاول مشكلة وعند تغيير تنسيق التاريخ Format$(Dat, "\#mm\/dd\/yyyy\#" يرجع الكود يعمل بصفة عادية ولكن هذه المشكلة أظن تخيناها منذ صباح اليوم 21 دقائق مضت, Foksh said: وادعم تعليقك والنتيجة بصورة مرفقة اذا سمحت نفس المشكلة كما في الصور التي ارسلتها قبل اليوم
Foksh قام بنشر بالامس في 15:48 قام بنشر بالامس في 15:48 2 دقائق مضت, طاهر اوفيسنا said: استاذي الكريم انت تخاطب مبتدي بالدرجة المتوسطة في الاكسس ولست خبير العفو منك أخي الكريم ، لم أقصد شيئاً من كلامي .. 3 دقائق مضت, طاهر اوفيسنا said: ثانيا : عند التجربة وبالكود الذي ارفقته رجعت لاول مشكلة وعند تغيير تنسيق التاريخ لاحظ انني قمت بتغيير وتعديل المشاركة للكود الي اقترحته .. 1 دقيقه مضت, طاهر اوفيسنا said: نفس المشكلة كما في الصور التي ارسلتها قبل اليوم هل تقصد المشكلة التي هي حذف قيمة الاقتطاع الشهري للسجل الأول ؟؟؟؟؟؟؟؟؟؟
Foksh قام بنشر بالامس في 17:20 قام بنشر بالامس في 17:20 (معدل) بعد تجربة الإقتراح الذي تم اختياره من قبل أستاذنا @أبوبسمله على عدة تنسيقات للتاريخ كانت النتيجة أنه لا يقوم بالمهمة المطلوبة عند اختلاف تنسيق التاريخ حسب النظام . المقترح التالي هو :- 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 تم تعديل بالامس في 17:31 بواسطه Foksh زيادة في التوضيح 1 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.