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

ما هو الكود المخصص الذي يقوم بحذف السجل المحدد بالنموذج الفرعي


kaser906

الردود الموصى بها

السلام عليكم ورحمة الله وبركاتة

عندما نقوم بتحديد السجل بالنموذج الفرعي كما هو موضح بالصورة ونضغط على مفتاح del

يتم حذف السجل المحدد

المطلوب :

ما هو الكود الذي يقوم بحذف السجل المحدد عن طريق المفتاح delet بلوحة المفاتيح

وكيف يمكنني توظيفة لتنفيذه عن طريق زر أمر  من النموذج الرئيسي

 

151308470276241.png

رابط هذا التعليق
شارك

اتفضل اليك هذا
 

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

 

رابط هذا التعليق
شارك

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 بلوحة المفاتيح

رابط هذا التعليق
شارك

وعليكم السلام

 

تفضل:smile:

اذا اخترت السجل في النموذج الفرعي ، ثم ضغطت زر الحذف من النموذج الرئيسي مباشرة
Screen.PreviousControl.SetFocus
DoCmd.RunCommand acCmdDeleteRecord



اما اذا اخترت السجل في النموذج الفرعي ، ثم اخذت لك لفة على كائنات النموذج الرئيسي
فيجب ان يجب ان نخبر الكود ان عملنا سيكون على النموذج الفرعي
frm_tap = اسم النموذج الفرعي

Me.frm_tap.SetFocus
DoCmd.RunCommand acCmdDeleteRecord

 

جعفر

  • Like 1
رابط هذا التعليق
شارك

13 دقائق مضت, jjafferr said:

وعليكم السلام

 

تفضل:smile:


اذا اخترت السجل في النموذج الفرعي ، ثم ضغطت زر الحذف من النموذج الرئيسي مباشرة
Screen.PreviousControl.SetFocus
DoCmd.RunCommand acCmdDeleteRecord



اما اذا اخترت السجل في النموذج الفرعي ، ثم اخذت لك لفة على كائنات النموذج الرئيسي
فيجب ان يجب ان نخبر الكود ان عملنا سيكون على النموذج الفرعي
frm_tap = اسم النموذج الفرعي

Me.frm_tap.SetFocus
DoCmd.RunCommand acCmdDeleteRecord

 

جعفر

ممتاز أستاذ جعفر

الأن خلينا نعقدها شويه

ماذا لو كان هناك اكثر من سجل تم تظليلهم كما بالصورة واردنا حذفهما معاً

انا جربت الكود اللي وضعته عند تظليل اكثر من سجل

يقوم بحذف السجل الذي تم تظليله أولا

سواء من الأعلى أو من الأسفل ويبقي على السجل الاخر

151309109154121.jpg

رابط هذا التعليق
شارك

الحين عرفت ، اسألتك السهلة عبارة عن طُعم ، لما تصيد الجواب ، تهجم عليه بالسؤال الصعب:blink:

 

شتان بين حذف سجل ، وحذف مجموعة سجلات في النموذج الفرعي!!

في النموذج الرئيسي ، اعمل الحدثين:

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

  • Like 3
رابط هذا التعليق
شارك

58 دقائق مضت, jjafferr said:

الحين عرفت ، اسألتك السهلة عبارة عن طُعم ، لما تصيد الجواب ، تهجم عليه بالسؤال الصعب:blink:

:wink2: هههههههه

بس ما راح أفهم من جوابك أنك ما راح ترد على أسألتي المستقبلية

منذ ساعه, 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.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information