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

طريقة للبحث في نموذجين رئيس وفرعي معاً


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

السلام عليكم

رداً على السؤال التالي:

سؤال عن كود البحث في جدولين

قمت بعمل محاولة بناء على ما تبين لي من مقصد السائل، وبناء على ملاحظة الأستاذ @د.كاف يار عن كون الفكرة مبتكرة، أعيد رفع المرفقات مع شرح مختزل للفكرة عارٍ من الصور، مع إضافة طريقة أخرى.

الفكرة قد تحتاج إلى تهذيب بحكم أنها كانت استجابة عفوية للسائل، أضعها بين أيديكم الغالية، عسى أن يُستفاد منها:

أللهم صلِ على سيدنا محمد وعلى آله وصحبه وسلم.

تنقسم الطريقة إلى جزئين رئيسيين، الأول منهما ثابت والثاني اقترحت طريقتين له:

الجزء الأول:

عمل استعلام توحيد بين الجدول الرئيسي والفرعي، يكون فيه من الجدول الفرعي Figlio :

1- الحقل الذي نرغب بالبحث ضمنه.

2- حقل المتسلسل.

3- حقل الربط.

ومن الجدول الرئيسي Padre:

1- الحقل الذي نرغب بالبحث ضمنه

2- حقل المتسلسل

3- حقل محسوب قيمته صفر (نستحصل عليها بضرب حقل المتسلسل بالقيمة صفر).

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

ملحوظة: يوجد في النموذج الفرعي حقل خفي مصدره المتسلسل في الجدول الفرعي.

الجزئية الثانية:

كيفية تحديد الحقل والسجل  الذي يتضمن الهدف!

هنا لدينا طريقتان:

الأولى:

بنقل التركيز إلى الحقل المطلوب :

Dim Padre As Integer ' متغير باسم (الأب) لحفظ قيمة معرف السجل في الجدول الرئيسي
Dim Figli As Integer ' متغير باسم (الابناء) لحفظ قيمة معر السجل في الجدول الفرعي
Padre = Me.id ' حقل خفي في نموذج البحث
Figli = Me.ID2 ' حقل خفي في نموذج البحث
If Me.ID2 = 0 Then ' هذا الشرط لجعل الكود يتحقق بالانتقال ووقوف في النموذج الرئيسي أو الانتقال ومتابعة البحث في النموذج الفرعي
DoCmd.OpenForm "form1" ' إعادة فتح النموذج الهدف لنقل التركيز إليه

DoCmd.GoToRecord acDataForm, "Form1", acGoTo, Padre ' فتح النموذج على السجل المنشود
DoCmd.GoToControl "[اسم رب العائلة]"  ' التركيز على حقل فيه
Else
DoCmd.OpenForm "form1"
DoCmd.GoToRecord acDataForm, "Form1", acGoTo, Padre 'Me.id
DoCmd.GoToControl "SubForm" ' نقل التركيز إلى النموذج الفرعي
DoCmd.GoToControl "[الاسم]" ' نقل التركيز إلى حقل في النموذج الفرعي

' هذا الجزء لنقل التركيز في النموذج الفرعي إلى السجل المطلوب
Dim rstt As dao.recordset
Dim rstrng As String
rstrng = "[id0]=" & Figli  'Forms!search!Figli
Set rstt = Forms!form1!Subform.Form.RecordsetClone
  rstt.FindFirst rstrng

     Forms!form1!Subform.Form.Bookmark = rstt.Bookmark
      Set rstt = Nothing

End If

الثانية:

باستخدام التنسيق الشرطي وهي الطريقة الأفضل برأيي.

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

' سيبدو الكود بهذه الطريقة 
Dim Padre As Integer
Dim Figli As Integer
Padre = Me.id
Figli = Me.ID2

Forms!form1!CondScnd.Value = Figli ' هنا نجعل حقل المعيار للتنسيق الشرطي يأخذ قيمته من المتغيرات المبين معناها في الكود السابق
Forms!form1!CondFrst.Value = Padre
DoCmd.GoToRecord acDataForm, "Form1", acGoTo, Padre
Forms!form1.Refresh
' مع اختصار المراحل 
' وتوفير ضرورة إعادة التركيز إلى نموذج البحث مع كل انتقال إلى الهدف

أرجو ممن يعرج على الموضوع  التفضل بوضع ملاحظاته أو اقتراحاته أو إضافته.

والحمد لله رب العالمين

أخيراً المثال من وضع السائل في الرابط المذكور أعلاه (مشكوراً مأجوراً إن شاء الله تعالى)

Search in Main form and Sub Form Simultaneously

 

 

 

Search_MaiForm_SubFormConditionl.accdb Search_MainF=SubFormSetFocus.accdb

تم تعديل بواسطه Khalf
  • Like 2
رابط هذا التعليق
شارك

بارك الله فيك استاذ @Khalf

عاشت ايدك على المجهود الكبير

 للتوضيح عن طلبي السابق

مرفق ملفين الملف الاصلي والملف الجديد

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

اردت فقط ان انقل عملية البحث والحقول  الى نموذج جديد (نموذج البحث المتقدم)

بحث يكون مثل بحث نظام الاكسس   عن طريق نموذج اخر كما في الصورة

تحياتي

الملف الاصلي.rar الملف الجديد.rar

Untitled.png

تم تعديل بواسطه Ahmed_J
رابط هذا التعليق
شارك

مرحباً

الموضوع مختلف عن طلبكم، فالغاية من الموضوع عرض طريقة قد تكون نافعة لتحقيق بحث في النموذجين الرئيسي والفرعي معاً، وليس من الضروري أن تلبي متطلبات الجميع.

وتستطيع أخي الكريم متابعة طلبك في سؤالك السابق مما يسمح للأعضاء الأكارم بفهم أكبر لما تبحثون عنه، بوضعه في سياقه.

  • Like 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.

×
×
  • اضف...

Important Information