أحمد العيسى قام بنشر منذ 15 ساعات قام بنشر منذ 15 ساعات (معدل) السلام عليكم ورحمة الله وبركاته باستخدام الكود التالى يمكن حذف أى سجل داخل قاعدة بيانات ما عدا عند حذف السجل الأخير فى نفس القاعدة تظهر هذه الرسالة كيف يمكن معالجة خطأ هذه الرسالة ؟؟ إذ أن المفترض بعد هذا الحذف ظهور صفحة فارغة من كل الحقول لإدخال سجل جديد الكود Private Sub Cmdel_Click() On Error GoTo Err_Cmdel_Click If MsgBox(":ستقوم الآن بحذف السجل المسجل بملف رقم" & vbCrLf _ & vbCrLf _ & [Nr] & " " & vbCrLf _ & [Name_T] & vbCrLf _ & " " & vbCrLf _ & "هل أنت متأكد ؟" & vbCrLf _ & "أضغط ( نعم ) للإستمرار ، أو ( لا ) لإلغاء الأمر", vbQuestion + vbYesNo _ + vbMsgBoxRight, "تحذيـــر") = vbYes Then Me.Recordset.Delete Me.Recordset.MoveNext End If Exit_Cmdel_Click: Exit Sub Err_Cmdel_Click: MsgBox Err.Description Resume Exit_Cmdel_Click End Sub تم تعديل منذ 15 ساعات بواسطه أحمد العيسى
Foksh قام بنشر منذ 15 ساعات قام بنشر منذ 15 ساعات (معدل) أعتقد أنه تم الإجابة عن هذا السؤال في موضوعك السابق ، والذي لم تقم بالرد عليه ومتابعته 🙂 . الجواب في هذه المشاركة هنا تم تعديل منذ 15 ساعات بواسطه Foksh
أحمد العيسى قام بنشر منذ 4 ساعات الكاتب قام بنشر منذ 4 ساعات 10 ساعات مضت, Foksh said: أعتقد أنه تم الإجابة عن هذا السؤال في موضوعك السابق أعتقد أن الموضوع مختلف كما تعلم : هذا الكود يمكن استخدامه فى أى قاعدة بيانات أخرى لذلك أريد معرفة سبب ظهور هذه الرسالة عند تطبيقه على حذف السجل الأخير للقاعدة وماذا تعنى وكيفية تلافيها مستقبلاً هل من الممكن فى الكود إضافة شرط : إذا كان السجل المحذوف هو الأخير فيجب إنشاء سجل جديد
kkhalifa1960 قام بنشر منذ 4 ساعات قام بنشر منذ 4 ساعات يبدو أن الخطأ الذي يظهر لك هو "This action was cancelled by an associated object." في Access عند محاولة حذف السجل باستخدام الكود. هذا قد يكون بسبب أحد الأسباب التالية: السجل مرتبط بكائن آخر: إذا كان السجل المحذوف مرتبطًا بجدول آخر عبر علاقة عدم السماح بالحذف المتتالي (مثل مفتاح أجنبي)، فقد يؤدي ذلك إلى إلغاء العملية. نموذج غير قابل للتحديث: إذا كان النموذج مبنيًا على استعلام غير قابل للتحديث، فقد لا يتم تنفيذ عملية الحذف بشكل صحيح. مشكلات في Recordset: استخدام Me.Recordset.Delete قد لا يكون الطريقة المثلى لحذف السجلات في بعض الحالات، خاصة إذا كان مصدر النموذج لا يدعم الحذف المباشر. تعامل غير صحيح مع الأخطاء: الكود يقوم بتنفيذ Resume Exit_Cmdel_Click بعد عرض رسالة الخطأ، مما قد يؤدي إلى تجاهل المشكلة دون التعامل معها بوضوح. الحلول الممكنة: استخدم DoCmd.RunCommand acCmdDeleteRecord بدلًا من Me.Recordset.Delete لتجربة طريقة حذف أخرى: If MsgBox("هل أنت متأكد من حذف السجل؟", vbQuestion + vbYesNo, "تحذير") = vbYes Then DoCmd.RunCommand acCmdDeleteRecord End If تحقق من العلاقات: إذا كان هناك جداول مرتبطة، جرب حذف السجل يدويًا من الجدول الرئيسي لمعرفة ما إذا كان هناك قيود تمنع الحذف. جرب Requery بعد الحذف: قد تحتاج إلى تحديث النموذج بعد الحذف لضمان تنفيذ العملية: Me.Requery
أحمد العيسى قام بنشر منذ 3 ساعات الكاتب قام بنشر منذ 3 ساعات 34 دقائق مضت, kkhalifa1960 said: يبدو أن الخطأ الذي يظهر لك هو "This action was cancelled by an associated object." في Access عند محاولة حذف السجل باستخدام الكود. هذا قد يكون بسبب أحد الأسباب التالية: السجل مرتبط بكائن آخر: إذا كان السجل المحذوف مرتبطًا بجدول آخر عبر علاقة عدم السماح بالحذف المتتالي (مثل مفتاح أجنبي)، فقد يؤدي ذلك إلى إلغاء العملية. نموذج غير قابل للتحديث: إذا كان النموذج مبنيًا على استعلام غير قابل للتحديث، فقد لا يتم تنفيذ عملية الحذف بشكل صحيح. مشكلات في Recordset: استخدام Me.Recordset.Delete قد لا يكون الطريقة المثلى لحذف السجلات في بعض الحالات، خاصة إذا كان مصدر النموذج لا يدعم الحذف المباشر. تعامل غير صحيح مع الأخطاء: الكود يقوم بتنفيذ Resume Exit_Cmdel_Click بعد عرض رسالة الخطأ، مما قد يؤدي إلى تجاهل المشكلة دون التعامل معها بوضوح. الحلول الممكنة: استخدم DoCmd.RunCommand acCmdDeleteRecord بدلًا من Me.Recordset.Delete لتجربة طريقة حذف أخرى: شكراً أخى لاهتمامك وردك سوف أضع مرفق للملف الذى أعمل عليه أدناه أحياناً الفورم يعمل بدون مشاكل بالمرة ، وفى بعض الأحيان تكون المشكلة فى حذف السجل الأخير لكن أرجو أن تضيف سجل جديد باستخدام أحد الأرقام القومية الآتية 26507111201809 أنثى 28603110400251 ذكر 27301052700568 أنثى 27908100400212 ذكر 28101200400409 أنثى والخروج من خانة الرقم القومى بعد لصقه بالضغط على زر Tab ثم قم بحذف هذا السجل .. المفترض بعد الحذف وجود صفحة بيضاء خالية من كل الحقول الغير منضمة لكن هذا لا يحدث دائماً db1.mdb
تمت الإجابة kkhalifa1960 قام بنشر منذ 2 ساعات تمت الإجابة قام بنشر منذ 2 ساعات اضف ماسج وتحديث بنهاية كود الحذف . Private Sub Cmdel_Click() On Error GoTo Err_Cmdel_Click If MsgBox(":ستقوم الآن بحذف السجل المسجل بملف رقم" & vbCrLf _ & vbCrLf _ & [Nr] & " " & vbCrLf _ & [Name_T] & vbCrLf _ & " " & vbCrLf _ & "هل أنت متأكد ؟" & vbCrLf _ & "أضغط ( نعم ) للإستمرار ، أو ( لا ) لإلغاء الأمر", vbQuestion + vbYesNo _ + vbMsgBoxRight, "تحذيـــر") = vbYes Then Me.Recordset.Delete Me.Recordset.MoveNext End If MsgBox "تم حذف السجل بنجاح", vbExclamation Me.Requery Exit_Cmdel_Click: Exit Sub Err_Cmdel_Click: MsgBox Err.Description Resume Exit_Cmdel_Click End Sub
Foksh قام بنشر منذ 2 ساعات قام بنشر منذ 2 ساعات (معدل) 2 ساعات مضت, أحمد العيسى said: كما تعلم : هذا الكود يمكن استخدامه فى أى قاعدة بيانات أخرى للأسف لا أعلم هذه المعلومة ، فأساليب حذف السجلات تختلف حسب فكر المبرمج وصانع الأكواد ،، ولكن تماشياً مع فكرتك ، سنقوم بجعل الكود يتأكد مما اذا كان هناك سجل بعد السجل الحالي المستهدف حذفه ، فإن كان هناك سجل فيتم الانتقال اليه ، وإذا كان السجل المطلوب حذفه هو آخر سجل فسيتم الانتقال الى سجل جديد بعد اتمام عملية الحذف .. استبدل كودك السابق بهذا الكود لزر حذف السجل :- Private Sub Cmdel_Click() On Error GoTo Err_Cmdel_Click If MsgBox(":ستقوم الآن بحذف السجل المسجل بملف رقم" & vbCrLf _ & vbCrLf _ & [Nr] & " " & vbCrLf _ & [Name_T] & vbCrLf _ & " " & vbCrLf _ & "هل أنت متأكد ؟" & vbCrLf _ & "أضغط ( نعم ) للإستمرار ، أو ( لا ) لإلغاء الأمر", _ vbQuestion + vbYesNo + vbMsgBoxRight, "تحذيـــر") = vbYes Then Dim rs As DAO.Recordset Set rs = Me.RecordsetClone rs.Bookmark = Me.Bookmark rs.Delete ' بعد الحذف ، سيتم التحقق مما اذا كان هناك سجل لا حق أم لا If Not rs.EOF Then rs.MoveNext If Not rs.EOF Then Me.Bookmark = rs.Bookmark Else ' لا يوجد سجل بعده - انتقل إلى سجل جديد DoCmd.GoToRecord , , acNewRec End If Else ' لا يوجد سجلات بعد الحذف - انتقل إلى سجل جديد DoCmd.GoToRecord , , acNewRec End If rs.Close Set rs = Nothing End If Exit_Cmdel_Click: Exit Sub Err_Cmdel_Click: MsgBox Err.Description, vbExclamation + vbMsgBoxRight, "خطأ" Resume Exit_Cmdel_Click End Sub أما بالنسبة للأسباب :- 2 ساعات مضت, أحمد العيسى said: وماذا تعنى وكيفية تلافيها مستقبلاً فالمشكلة التي تحصل معك سببها أنه وبعد اجراء عملية الحذف ، فإن اكسيس تلقائياً يقوم بالانتقال إلى السجل التالي ( MoveNext ) لكن !!! وبما أنه لا يوجد سجل تالي ، هنا قد يحدث خطأ أو يبقى النموذج " بدون سجل " ، مما يسبب تجميد أو ظهور نموذج فارغ أو حتى خطأ غير متوقع. تم تعديل منذ 1 ساعه بواسطه Foksh
أحمد العيسى قام بنشر منذ 1 ساعه الكاتب قام بنشر منذ 1 ساعه كل الشكر والتقدير لكل من kkhalifa1960 Foksh رسالة الخطأ التى تحدثت عنها فى بداية الموضوع لا تؤثر فى عمل النموذج وتعتبر شيئاً زائداً فى بعض الأحيان لكن استفدت منكما فى معرفة سببها لذلك لن أقوم بالتعديل حالياً ، فالوضع الحالى بدون تعديل هو الأفضل مرة أخرى .. شكراً جزيلاً لكما
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.