اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

قام بنشر

السلام عليكم ورحمة الله وبركاته. اساتذتي الاعزاء: نموذج form فيه حقول NAM ومربع سرد اسم الصنف فيه قيم (a-b-c) ممكن مساعدتي عندما اختار احد هذه القيم من مربع السرد في السجل المحدد يفتح نموذج باسم هذه القيمة على السجل المحدد من nam بمعنى عندما اختار قيمة (a) من السجل رقم (3) يفتح نموذج a على السجل 3 فقط شكرا 

test.accdb

  • تمت الإجابة
قام بنشر

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

2 ساعات مضت, فؤاد الدلوي said:

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

تفضل  اليك التعيل إن شاء الله يكن حسب المطلوب 

test (5).accdb

  • Thanks 1
قام بنشر (معدل)

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

وكالعادة ننوه ونذكر وننصح أخواننا في طلباتهم ومشاركاتهم أن يبتعدوا عن المسميات التي باللغة العربية والتي تحتوي مسافات ( أكثر من كلمة ) ولكن بلا جدوى ، و والله أن النصيحة ليست لي أو لأي شخص يقوم بتقديم حل لأي مشكلة بقدر ما هي ستعود بالفائدة التعليمية وصحة ودقة النتائج العملية لصاحب المشاركة والملف ..

على العموم ، قد أعجبتني فكرة الأستاذ @ابو عارف :clapping:، فهي بسيطة و تلبي الحاجة المطلوبة بشكل جيد ، ولي رغبة في مشاركته أفكاره بعدة حلول ، أذكر منها حلين في مرفقين اثنين .

 

الأول في الملف المرفق (test (1)) ، في حدث بعد التحديث للكومبوبوكس :-

Private Sub اسم_الصنف_AfterUpdate()
    Dim selectedForm As String
    Dim currentID As Long

    selectedForm = Me.اسم_الصنف.Value
    currentID = Me.ID.Value

    If Not IsNull(selectedForm) Then
        DoCmd.OpenForm selectedForm, acNormal, , , , , currentID
    Else
        MsgBox "يرجى اختيار قيمة صحيحة!", vbExclamation
    End If
End Sub

بحيث يتم تطبيق الفلترة في حدث عند التحميل للنماذج الـ 3 = A,B,C التي ذكرها أخونا الكريم في طلبه :-

Private Sub Form_Load()
    Dim recordID As Long

    If Not IsNull(Me.OpenArgs) Then
        recordID = CLng(Me.OpenArgs)

        Me.Filter = "[ID] = " & recordID
        Me.FilterOn = True

        If Not IsNull(Me!نموذج_فرعي_qa) Then
            Me!نموذج_فرعي_qa.Form.Filter = "[ID] = " & recordID
            Me!نموذج_فرعي_qa.Form.FilterOn = True
        End If
    Else
        MsgBox "لم يتم تمرير رقم السجل بشكل صحيح", vbExclamation
    End If
End Sub

 

الثاني في الملف المرفق (test (2)) ، في حدث بعد التحديث للكومبوبوكس :-

Private Sub اسم_الصنف_AfterUpdate()
    Dim selectedForm As String
    Dim currentID As Long

    selectedForm = Me.اسم_الصنف.Value
    currentID = Me.ID.Value

    If Not IsNull(selectedForm) Then
        DoCmd.OpenForm selectedForm, acNormal, , , , , currentID
    Else
        MsgBox "يرجى اختيار قيمة صحيحة", vbExclamation + vbMsgBoxRight
    End If
End Sub

وتم نقل الكود لضمان عدم تكراره في النماذج الى وحدة نمطية مع إجراء بعض التعديلات ، بحيث يصبح الكود منفصلاً كالتالي :-

Public Sub ApplyRecordFilter(frm As Form, Optional subFormName As String = "", Optional recordID As Variant)
    If IsNull(recordID) Or recordID = "" Then
        MsgBox "لم يتم تمرير رقم السجل بشكل صحيح", vbExclamation + vbMsgBoxRight
        Exit Sub
    End If

    frm.Filter = "[ID] = " & recordID
    frm.FilterOn = True

    If subFormName <> "" Then
        On Error Resume Next
        If Not IsNull(frm.Controls(subFormName)) Then
            frm.Controls(subFormName).Form.Filter = "[ID] = " & recordID
            frm.Controls(subFormName).Form.FilterOn = True
        Else
            MsgBox "لم يتم العثور على النموذج الفرعي " & subFormName, vbExclamation + vbMsgBoxRight
        End If
        On Error GoTo 0
    End If
End Sub

والإستدعاء يكفينا في النماذج الفرعية كالتالي :-

Private Sub Form_Load()
    ApplyRecordFilter Me, "نموذج_فرعي_qa", Me.OpenArgs
End Sub

قمنا بتمرير قيمة الـ ID إلى النموذج الرئيسي باستخدام OpenArgs لأنها طريقة آمنة وموثوقة بالنسبة لي ، ثم سنطبق الفلتر داخل حدث تحميل النموذج ( On Load ) مباشرة بعد أن يفتح بالكامل

وفي الفكرتين لن نحتاج أي روابط بين الحقول ( Link Master Fields & Link Child Fields ) لأننا سنعتمد على الفلتر يدوياً .

 

المرفقات للطريقتين :-

test (1).accdb

test (2).accdb

 

 

تم تعديل بواسطه Foksh
تنسيق المشاركة
  • Thanks 1

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