Abdelaziz Osman قام بنشر الثلاثاء at 19:45 قام بنشر الثلاثاء at 19:45 السلام عليكم ورحمة الله لدي نموذج باسم fm4 اريد عند حذف أي سجل بالكامل بمحتوياته كلها من هذا النموذج يقوم الاكسس بأخذ نسخة من محتويات حقل واحد فقط من السجل اسم الحقل t4 يضعها في حقل اخر باسم oldrec هذا الحق داخل جدول باسم hestable مع تسجيل كل من الاتي داخل الجدول hestable - اسم اليوزر القائم بالحذف. - اسم الكمبيوتر. - التاريخ الحالي تاريخ الحذف. ويوجد بالجدول hestable ثلاث حقول من الممكن استخدامهم في تسجيل تلك الثلاث حقول أسمائهم كالتالي - User - Comname - curdata
Foksh قام بنشر الثلاثاء at 19:49 قام بنشر الثلاثاء at 19:49 أين المرفق الذي تريد التعديل عليه 😅 ؟؟؟ مع أن الأمر هيّن إن شاء الله
تمت الإجابة kkhalifa1960 قام بنشر الثلاثاء at 20:21 تمت الإجابة قام بنشر الثلاثاء at 20:21 (معدل) ضع هذا الكود داخل حدث BeforeDelConfirm أو Delete في نموذج fm4 حسب ما يناسبك. الأفضل استخدام BeforeDelConfirm لأنه يسبق الحذف ويمنحك فرصة التسجيل قبل الإزالة. 📌 الخطوات: افتح النموذج fm4 في وضع التصميم. اضغط على النموذج نفسه (وليس عنصر داخل النموذج). من نافذة الخصائص، اختر الحدث BeforeDelConfirm. اضغط على زر "..." واختر "منشئ الكود". الصق الكود التالي: Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer) Dim db As DAO.Database Dim rs As DAO.Recordset Dim strT4 As String Dim strUser As String Dim strComName As String Dim dtNow As Date Dim userChoice As VbMsgBoxResult ' عرض رسالة تأكيد userChoice = MsgBox("هل أنت متأكد أنك تريد حذف هذا السجل؟", vbYesNo + vbQuestion, "تأكيد الحذف") If userChoice = vbNo Then ' إلغاء الحذف Cancel = True Response = acDeleteCancel Exit Sub End If ' استخراج البيانات من السجل الحالي strT4 = Nz(Me.t4, "") strUser = Environ("Username") strComName = Environ("Computername") dtNow = Now ' فتح الجدول وإضافة سجل جديد Set db = CurrentDb Set rs = db.OpenRecordset("hestable", dbOpenDynaset) rs.AddNew rs!oldrec = strT4 rs!User = strUser rs!Comname = strComName rs!curdata = dtNow rs.Update rs.Close Set rs = Nothing Set db = Nothing ' السماح بالحذف Response = acDeleteOK End Sub 💡 ملاحظات مهمة تأكد أن الحقول التالية موجودة في جدول hestable: oldrec (نص) User (نص) Comname (نص) curdata (تاريخ/وقت) الكود يستخدم Environ("Username") و Environ("Computername") للحصول على اسم المستخدم واسم الجهاز. إذا أردت منع الحذف في حالات معينة (مثلاً إذا كان t4 فارغًا)، يمكن تعديل الكود لإلغاء الحذف عبر: Cancel = True Response = acDeleteCancel تم تعديل الثلاثاء at 20:26 بواسطه kkhalifa1960 1
Foksh قام بنشر الثلاثاء at 22:09 قام بنشر الثلاثاء at 22:09 وعليكم السلام ورحمة الله وبركاته .. يبدو أنك تريد نقل الأفكار إلى مشروعك مباشرةً .. صحيح ؟؟ طيب ، ومشاركةً مع الأستاذ @kkhalifa1960 ، هذه فكرة أخرى من خلال زر الحذف نفسه . حيث استعملت الفكرة التالية في الزر فقط :- Private Sub Btn_Del_Click() Dim Response As VbMsgBoxResult Dim t4Value As Variant Dim userName As String Dim computerName As String Dim sql As String Response = MsgBox("هل أنت متأكد أنك تريد حذف هذا السجل؟", vbYesNo + vbQuestion + vbMsgBoxRight, "") If Response = vbYes Then If IsNull(Me.T4) Or Me.T4 = "" Then MsgBox "لا يمكن تسجيل الحذف لأن الحقل T4 فارغ", vbExclamation + vbMsgBoxRight, "" Exit Sub End If t4Value = Me.T4 userName = Environ("Username") computerName = Environ("ComputerName") sql = "INSERT INTO hestable (oldrec, [User], Comname, curdata) " & _ "VALUES ('" & Replace(t4Value, "'", "''") & "', '" & Replace(userName, "'", "''") & "', '" & Replace(computerName, "'", "''") & "', Now());" On Error GoTo ErrHandler CurrentDb.Execute sql, dbFailOnError DoCmd.SetWarnings False DoCmd.RunCommand acCmdDeleteRecord DoCmd.SetWarnings True Else MsgBox "تم إلغاء عملية الحذف", vbInformation + vbMsgBoxRight, "" End If Exit Sub ErrHandler: MsgBox "حدث خطأ أثناء تسجيل الحذف", vbCritical + vbMsgBoxRight, "خطأ" End Sub TrackDelete.zip 1
Abdelaziz Osman قام بنشر الأربعاء at 15:12 الكاتب قام بنشر الأربعاء at 15:12 بالغ التحية والتقدير والاحترام لكما معلمينا الافاضل @kkhalifa1960 & @Foksh 1
Abdelaziz Osman قام بنشر الأربعاء at 16:33 الكاتب قام بنشر الأربعاء at 16:33 لكن كلما استخدمت كلى الاكواد يعطينى رسالة ان الحقل t4 فارغ ولا يقوم بنسخ محتوى الحقل t4 فما العمل @kkhalifa1960 & @Foksh
Foksh قام بنشر الأربعاء at 17:27 قام بنشر الأربعاء at 17:27 الخلل في طريقة تنفيذك ونقلك للفكرة . ما لم تقم بارفاق ملفك مع العلم انك قمت باختيار الاجابة ... فكيف هذا !!!!
Abdelaziz Osman قام بنشر الأربعاء at 17:31 الكاتب قام بنشر الأربعاء at 17:31 نعم بالفعل النموذج المرسل منك سيدي يعمل بالفعل ولكن لدي نموذج مشروعى يعطى الرسالة التى اخبرتك بها هل من الممكن اضافة سطر داخل الكود يقوم بنسخ محتويات t4 اولا لك جزيل الشكر
Foksh قام بنشر الأربعاء at 17:34 قام بنشر الأربعاء at 17:34 1 دقيقه مضت, Abdelaziz Osman said: هل من الممكن اضافة سطر داخل الكود يقوم بنسخ محتويات t4 اولا دلالة على انك لم تقرأ الكود وتتفحصه اخي الكريم .. لاحظ الجزء التالي :- t4Value = Me.T4 userName = Environ("Username") computerName = Environ("ComputerName") sql = "INSERT INTO hestable (oldrec, [User], Comname, curdata) " & _ "VALUES ('" & Replace(t4Value, "'", "''") & "', '" & Replace(userName, "'", "''") & "', '" & Replace(computerName, "'", "''") & "', Now());" On Error GoTo ErrHandler CurrentDb.Execute sql, dbFailOnError جملة تنفيذ استعلام اضافة داخل الجدول أولا . ثم :- DoCmd.SetWarnings False DoCmd.RunCommand acCmdDeleteRecord DoCmd.SetWarnings True جملة حذف السجل ثانياً
Abdelaziz Osman قام بنشر الأربعاء at 17:40 الكاتب قام بنشر الأربعاء at 17:40 (معدل) 6 دقائق مضت, Foksh said: دلالة على انك لم تقرأ الكود وتتفحصه اخي الكريم .. لاحظ الجزء التالي :- t4Value = Me.T4 userName = Environ("Username") computerName = Environ("ComputerName") sql = "INSERT INTO hestable (oldrec, [User], Comname, curdata) " & _ "VALUES ('" & Replace(t4Value, "'", "''") & "', '" & Replace(userName, "'", "''") & "', '" & Replace(computerName, "'", "''") & "', Now());" On Error GoTo ErrHandler CurrentDb.Execute sql, dbFailOnError جملة تنفيذ استعلام اضافة داخل الجدول أولا . ثم :- DoCmd.SetWarnings False DoCmd.RunCommand acCmdDeleteRecord DoCmd.SetWarnings True جملة حذف السجل ثانياً اسمح لى اعد لك نموذج مصغر من مشروعى وارسله اليك لكي تختبرة بنفسك وقد قرات الكود بالفعل اكثر من مرة ولكن يوجد لدي مشروع شئ اخر لا اعرفه اسمح لى ارجع لك مرة اخرى ولكن اسمح لى ان استخدم كود حدث قبل الحذف الذي اعده اخونا الكريم @kkhalifa1960 تم تعديل الأربعاء at 17:42 بواسطه Abdelaziz Osman
Abdelaziz Osman قام بنشر الأربعاء at 18:44 الكاتب قام بنشر الأربعاء at 18:44 منذ ساعه, Foksh said: دلالة على انك لم تقرأ الكود وتتفحصه اخي الكريم .. لاحظ الجزء التالي :- t4Value = Me.T4 userName = Environ("Username") computerName = Environ("ComputerName") sql = "INSERT INTO hestable (oldrec, [User], Comname, curdata) " & _ "VALUES ('" & Replace(t4Value, "'", "''") & "', '" & Replace(userName, "'", "''") & "', '" & Replace(computerName, "'", "''") & "', Now());" On Error GoTo ErrHandler CurrentDb.Execute sql, dbFailOnError جملة تنفيذ استعلام اضافة داخل الجدول أولا . ثم :- DoCmd.SetWarnings False DoCmd.RunCommand acCmdDeleteRecord DoCmd.SetWarnings True جملة حذف السجل ثانياً مرفق سيدى الملف والفكرة انه عند فتح النموذج يوجد عامل تصفية يرجى عدم الغاء فكرة عامل التصفية افتح على سبيل المثال السجل رقم 2798/2023 وقم بحذفه سوف يعطى رسالة انه لم يستخرج قيمة من الحقل T4 مسبقا لانه على حد علمى ياخذ القيمة بعد الحذف ارجو عدم الغاء عامل التصفية لانه مهم فى مشروعى FMK.accdb 1
Foksh قام بنشر الأربعاء at 18:57 قام بنشر الأربعاء at 18:57 هذا ليس الكود الذي ارفقته لك بدايةً .. ثم أنه لا بد من أن تقوم بالتفريق بين حقل وعنصر مربع نص الحقل أحد مكونات الجدول . أما العنصر T4 الذي تقصده فهو مربع نص مصدره في جدوله = الحقل TENDER_NO شكراً لك ..
Abdelaziz Osman قام بنشر الأربعاء at 19:01 الكاتب قام بنشر الأربعاء at 19:01 1 دقيقه مضت, Foksh said: هذا ليس الكود الذي ارفقته لك بدايةً .. ثم أنه لا بد من أن تقوم بالتفريق بين حقل وعنصر مربع نص الحقل أحد مكونات الجدول . أما العنصر T4 الذي تقصده فهو مربع نص مصدره في جدوله = الحقل TENDER_NO شكراً لك .. نعم سيدي تعليقك صحيح ولكنى جربت ان اغير الاسم من T4 الى TENDER_NO , ولكن التغيير لم يستجيب ايضا
Foksh قام بنشر الأربعاء at 22:05 قام بنشر الأربعاء at 22:05 3 ساعات مضت, Abdelaziz Osman said: لكنى جربت ان اغير الاسم من T4 الى TENDER_NO , ولكن التغيير لم يستجيب ايضا رغم أن ملفك الذي ارفقته لا يحمل أسماء الحقول التي أخبرتنا بها في رأس الموضوع ، وهذا شيء مربك لك . فلو أنك من البداية أرفقت ملفك لكنت الآن قد انتهيت من مشكلتك منذ الرد الأول .. على العموم , هذا ملفك الذي ارسلته بالتطبيق الكامل .. FMK.zip
Abdelaziz Osman قام بنشر بالامس في 05:43 الكاتب قام بنشر بالامس في 05:43 7 ساعات مضت, Foksh said: عذرا سيدي كنت اريد ان اتعلم من سيادتكم الخطوات واطبقها بنفسى واعرف مفاتيح الحلول لك كل الشكر والتقدير على مساعدتى فى كثير من الموضوعات
Abdelaziz Osman قام بنشر بالامس في 06:52 الكاتب قام بنشر بالامس في 06:52 8 ساعات مضت, Foksh said: رغم أن ملفك الذي ارفقته لا يحمل أسماء الحقول التي أخبرتنا بها في رأس الموضوع ، وهذا شيء مربك لك . فلو أنك من البداية أرفقت ملفك لكنت الآن قد انتهيت من مشكلتك منذ الرد الأول .. على العموم , هذا ملفك الذي ارسلته بالتطبيق الكامل .. FMK.zip 31.61 kB · 6 downloads @Foksh الا يمكن ان يتم تطبيق الكود من خلال حدث قبل الحذف او عند الحذف فى تصميم النموذج رجاء سيدي لان الموضوع يهمنى كثيرا ان امكن من فضلك
Foksh قام بنشر بالامس في 10:53 قام بنشر بالامس في 10:53 أخي الكريم ، لماذا لا تبحث عن طريقة التنفيذ المستقر والآمن لأي فكرة تريدها ؟؟ فأنا لم أجرب الحدث من خلال النموذج كما في فكرة الأستاذ خليفة جزاه الله خيراً ، ولذا ننتظر الإجابة من صاحب الإجابة بخصوص فكرته 1
Abdelaziz Osman قام بنشر بالامس في 12:26 الكاتب قام بنشر بالامس في 12:26 1 ساعه مضت, Foksh said: أخي الكريم ، لماذا لا تبحث عن طريقة التنفيذ المستقر والآمن لأي فكرة تريدها ؟؟ فأنا لم أجرب الحدث من خلال المنوذج كما في فكرة الأستاذ خليفة جزاه الله خيراً ، ولذا ننتظر الإجابة من صاحب الإجابة بخصوص فكرته @Foksh لك جزيل الشكر معلمنا الفاضل @ kkhalifa1960 استاذنا ان امكن المساعدة بالغ التحية والتقدير
ابوخليل قام بنشر منذ 22 ساعات قام بنشر منذ 22 ساعات مشاركة مع اخوتي واحبتي لا اعلم لماذا صاحب الموضوع يلجأ الى اكواد وعمليات برمجية طويلة من اجل فلترة سجل واحد ؟ اما بالنسبة لمسألة عدم حفظ قيمة الحقل .. فأنت فقط تحتاج الى تقديم بعض الاسطر على بعض انظر التعديل على العمل بسيط ومفهوم FMK2.rar 2
Foksh قام بنشر منذ 20 ساعات قام بنشر منذ 20 ساعات صاحب الموضوع متمسك بالحدث المتعلق بالنموذج وليس بزر الحذف نفسه .. دائماً ما يلجأ البعض إلى الطرق الأصعب أو التي قد لا تحقق الهدف بشكل مباشر 🤷♂️ 1
Abdelaziz Osman قام بنشر منذ 5 ساعات الكاتب قام بنشر منذ 5 ساعات @ابوخليل جزيل الشكر والتقدير ووافر التحية @ Foksh جزيل الشكر والتقدير والاحترام استفدت كثيرا منكم معليمنا المبجلين
Abdelaziz Osman قام بنشر منذ 4 ساعات الكاتب قام بنشر منذ 4 ساعات (معدل) @ابوخليل جزيل الشكر والتقدير ووافر التحية @Foksh جزيل الشكر والتقدير والاحترام @kkhalifa1960 جزيل الشكر والتقدير والاحترام كل الفكرة المراد عرضها هي كالاتى نفترض ان المستخدم قام باستخدام زر الحذف الاساسى بقوائم الادوات اكسيس ففى هذه الحالة اصبحت الفكرة ليست لها قيمة النتيجة صفر ارجوا ان يكون تم فهم مرادى من استخدام زر الحذف الاساسى بارك الله فى علمكم تم تعديل منذ 4 ساعات بواسطه Abdelaziz Osman
ابوخليل قام بنشر منذ 3 ساعات قام بنشر منذ 3 ساعات انت تصعب الامور على نفسك يمكنك حجب الحذف الأساسي عن النموذج بطرق عدة بحيث لا يمكن الحذف الا من خلال الزر فقط 1
ابوخليل قام بنشر منذ 3 ساعات قام بنشر منذ 3 ساعات احدى الطرق مثلا في مثالي المرفق اعلاه 1- نمنع الحذف من خصائص النموذج .. لسان التبويب /بيانات 2 - نضع سطرا للسماح بالحذف قبل دالة الحذف في الكود .. وسطرا للمنع بعدها هكذا : Me.AllowDeletions = True DoCmd.RunCommand acCmdDeleteRecord Me.AllowDeletions = False 2
Abdelaziz Osman قام بنشر منذ 3 ساعات الكاتب قام بنشر منذ 3 ساعات 13 دقائق مضت, ابوخليل said: احدى الطرق مثلا 1- نمنع الحذف من خصائص النموذج .. لسان التبويب /بيانات 2 - نضع سطرا للسماح بالحذف قبل دالة الحذف في الكود .. وسطرا للمنع بعدها هكذا : Me.AllowDeletions = True DoCmd.RunCommand acCmdDeleteRecord Me.AllowDeletions = False تحياتى لك معلمنا عندما استخدمت الطريقة الاولى زرار الحذف داخل النموذج لم يعمل وعندما استخدمت الطريقة الثانية زر الحذف الاساسى بالاكسيس كان يعمل فما الحل ؟
الردود الموصى بها
انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد
يجب ان تكون عضوا لدينا لتتمكن من التعليق
انشئ حساب جديد
سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .
سجل حساب جديدتسجيل دخول
هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.
سجل دخولك الان