kaser906 قام بنشر ديسمبر 12, 2017 قام بنشر ديسمبر 12, 2017 السلام عليكم ورحمة الله وبركاتة عندما نقوم بتحديد السجل بالنموذج الفرعي كما هو موضح بالصورة ونضغط على مفتاح del يتم حذف السجل المحدد المطلوب : ما هو الكود الذي يقوم بحذف السجل المحدد عن طريق المفتاح delet بلوحة المفاتيح وكيف يمكنني توظيفة لتنفيذه عن طريق زر أمر من النموذج الرئيسي
Shivan Rekany قام بنشر ديسمبر 12, 2017 قام بنشر ديسمبر 12, 2017 اتفضل اليك هذا Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyDelete Then If MsgBox("åá ÊÑíÏ ÍÐÝ åÐÇ ÇáÓÌá", vbYesNo) = vbYes Then DoCmd.SetWarnings False DoCmd.RunCommand acCmdDeleteRecord DoCmd.SetWarnings True End If End If End Sub Private Sub Form_Open(Cancel As Integer) Me.KeyPreview = True End Sub
kaser906 قام بنشر ديسمبر 12, 2017 الكاتب قام بنشر ديسمبر 12, 2017 14 دقائق مضت, Shivan Rekany said: اتفضل اليك هذا Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyDelete Then If MsgBox("åá ÊÑíÏ ÍÐÝ åÐÇ ÇáÓÌá", vbYesNo) = vbYes Then DoCmd.SetWarnings False DoCmd.RunCommand acCmdDeleteRecord DoCmd.SetWarnings True End If End If End Sub Private Sub Form_Open(Cancel As Integer) Me.KeyPreview = True End Sub يعطيك العافية أستاذ شفان اريد تنفيذ أمر الحذف عن طريق زر أمر بالنموذج الرئيسي وليس عن طريق الزر يdel بلوحة المفاتيح
jjafferr قام بنشر ديسمبر 12, 2017 قام بنشر ديسمبر 12, 2017 وعليكم السلام تفضل اذا اخترت السجل في النموذج الفرعي ، ثم ضغطت زر الحذف من النموذج الرئيسي مباشرة Screen.PreviousControl.SetFocus DoCmd.RunCommand acCmdDeleteRecord اما اذا اخترت السجل في النموذج الفرعي ، ثم اخذت لك لفة على كائنات النموذج الرئيسي فيجب ان يجب ان نخبر الكود ان عملنا سيكون على النموذج الفرعي frm_tap = اسم النموذج الفرعي Me.frm_tap.SetFocus DoCmd.RunCommand acCmdDeleteRecord جعفر 1
kaser906 قام بنشر ديسمبر 12, 2017 الكاتب قام بنشر ديسمبر 12, 2017 13 دقائق مضت, jjafferr said: وعليكم السلام تفضل اذا اخترت السجل في النموذج الفرعي ، ثم ضغطت زر الحذف من النموذج الرئيسي مباشرة Screen.PreviousControl.SetFocus DoCmd.RunCommand acCmdDeleteRecord اما اذا اخترت السجل في النموذج الفرعي ، ثم اخذت لك لفة على كائنات النموذج الرئيسي فيجب ان يجب ان نخبر الكود ان عملنا سيكون على النموذج الفرعي frm_tap = اسم النموذج الفرعي Me.frm_tap.SetFocus DoCmd.RunCommand acCmdDeleteRecord جعفر ممتاز أستاذ جعفر الأن خلينا نعقدها شويه ماذا لو كان هناك اكثر من سجل تم تظليلهم كما بالصورة واردنا حذفهما معاً انا جربت الكود اللي وضعته عند تظليل اكثر من سجل يقوم بحذف السجل الذي تم تظليله أولا سواء من الأعلى أو من الأسفل ويبقي على السجل الاخر
jjafferr قام بنشر ديسمبر 12, 2017 قام بنشر ديسمبر 12, 2017 الحين عرفت ، اسألتك السهلة عبارة عن طُعم ، لما تصيد الجواب ، تهجم عليه بالسؤال الصعب شتان بين حذف سجل ، وحذف مجموعة سجلات في النموذج الفرعي!! في النموذج الرئيسي ، اعمل الحدثين: Option Compare Database Option Explicit Private Sub cmd_Delete_Click() 'اذا اخترت السجل في النموذج الفرعي ، ثم ضغطت زر الحذف من النموذج الرئيسي مباشرة 'Screen.PreviousControl.SetFocus 'DoCmd.RunCommand acCmdDeleteRecord 'اما اذا اخترت السجل في النموذج الفرعي ، ثم اخذت لك لفة على كائنات النموذج الرئيسي 'فيجب ان يجب ان نخبر الكود ان عملنا سيكون على النموذج الفرعي 'frm_tap = اسم النموذج الفرعي 'Me.frm_tap.SetFocus 'DoCmd.RunCommand acCmdDeleteRecord Call Form_frm_tap.Delete_Record End Sub Private Sub frm_tap_Exit(Cancel As Integer) Call Form_frm_tap.rowsSelected End Sub . وفي النموذج الفرعي ، اعمل هذه الاحداث: Option Compare Database Option Explicit Dim Selected_Rows() As String Dim i As Integer Dim rst As DAO.Recordset Dim ctrl_Name As String ' Public Sub rowsSelected() ctrl_Name = "sit_no" Dim selH As Long, selT As Long ReDim Selected_Rows(0) selH = Me.SelHeight selT = Me.SelTop - 1 If Me.SelHeight <> 0 Then ReDim Selected_Rows(Me.SelHeight) Set rst = Me.RecordsetClone rst.MoveFirst: rst.Move selT For i = 0 To Me.SelHeight - 1 Selected_Rows(i) = rst(ctrl_Name) rst.MoveNext Next rst.Close: Set rst = Nothing End If End Sub Public Sub Delete_Record() On Error GoTo err_Delete_Record Set rst = Me.RecordsetClone For i = LBound(Selected_Rows) To UBound(Selected_Rows) - 1 rst.FindFirst "[" & ctrl_Name & "]=" & Selected_Rows(i) rst.Delete Next i Exit_Delete_Record: rst.Close: Set rst = Nothing Exit Sub err_Delete_Record: If Err.Number = 9 Then Resume Exit_Delete_Record Else MsgBox Err.Number & vbCrLf & Err.Description End If End Sub . رجاء ملاحظة: 1. لازم تعطي اسم الحقل الى المتغير ، من هنا: ctrl_Name = "sit_no" 2. في الكود ، انا استعملت حقل رقم (انظر الكود اعلاه) ، فإذا استعملت حقل نص ، فيجب: تبديل هذا السطر rst.FindFirst "[" & ctrl_Name & "]=" & Selected_Rows(i) الى rst.FindFirst "[" & ctrl_Name & "]='" & Selected_Rows(i) & "'" جعفر 786.Delete_SubForm_Records.mdb.zip 3
kaser906 قام بنشر ديسمبر 12, 2017 الكاتب قام بنشر ديسمبر 12, 2017 58 دقائق مضت, jjafferr said: الحين عرفت ، اسألتك السهلة عبارة عن طُعم ، لما تصيد الجواب ، تهجم عليه بالسؤال الصعب هههههههه بس ما راح أفهم من جوابك أنك ما راح ترد على أسألتي المستقبلية منذ ساعه, jjafferr said: Option Compare Database Option Explicit Private Sub cmd_Delete_Click() 'اذا اخترت السجل في النموذج الفرعي ، ثم ضغطت زر الحذف من النموذج الرئيسي مباشرة 'Screen.PreviousControl.SetFocus 'DoCmd.RunCommand acCmdDeleteRecord 'اما اذا اخترت السجل في النموذج الفرعي ، ثم اخذت لك لفة على كائنات النموذج الرئيسي 'فيجب ان يجب ان نخبر الكود ان عملنا سيكون على النموذج الفرعي 'frm_tap = اسم النموذج الفرعي 'Me.frm_tap.SetFocus 'DoCmd.RunCommand acCmdDeleteRecord Call Form_frm_tap.Delete_Record End Sub Private Sub frm_tap_Exit(Cancel As Integer) Call Form_frm_tap.rowsSelected End Sub . وفي النموذج الفرعي ، اعمل هذه الاحداث: Option Compare Database Option Explicit Dim Selected_Rows() As String Dim i As Integer Dim rst As DAO.Recordset Dim ctrl_Name As String ' Public Sub rowsSelected() ctrl_Name = "sit_no" Dim selH As Long, selT As Long ReDim Selected_Rows(0) selH = Me.SelHeight selT = Me.SelTop - 1 If Me.SelHeight <> 0 Then ReDim Selected_Rows(Me.SelHeight) Set rst = Me.RecordsetClone rst.MoveFirst: rst.Move selT For i = 0 To Me.SelHeight - 1 Selected_Rows(i) = rst(ctrl_Name) rst.MoveNext Next rst.Close: Set rst = Nothing End If End Sub Public Sub Delete_Record() On Error GoTo err_Delete_Record Set rst = Me.RecordsetClone For i = LBound(Selected_Rows) To UBound(Selected_Rows) - 1 rst.FindFirst "[" & ctrl_Name & "]=" & Selected_Rows(i) rst.Delete Next i Exit_Delete_Record: rst.Close: Set rst = Nothing Exit Sub err_Delete_Record: If Err.Number = 9 Then Resume Exit_Delete_Record Else MsgBox Err.Number & vbCrLf & Err.Description End If End Sub بسم لله ما شاء الله اللهم صل على محمد وآل محمد ربي يحرسك ويحميك النتائج 100/% الله يجزيك خير ويرحم والديك
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.