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

طلب تعديل كود دالة dlookup بأكثر من شرط من جدولين


kaser906

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

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

بالمرفق نموذج Frm

المطلوب :

بعد إدخال رقم في مربع النص Num_rihla وليكن 10  ومربع النص   Num_intr وليكن الرقم 25

عند النقر على زر أمر فتح التقرير

أن يتم إظهار رقم PcDigt  في مربعات النص غير المنظمة

حسب الشرط التالي

Num_rihla =Forms!Frm!Num_rihla  And Num_intr = Forms!Frm!Num_intr

مطلوب كود dlookup في مصدر عنصر التحكم في مربع النص الغير منظم في التقرير من الجدولين بحيث  يجلب رقم PcDigt من الجدول Tabl_bus الى الحقل s10 مثلا بشرط أن يكونNum_rihla = Num_rihla!Frm  And Num_intr=Frm !Num_intr وحقل Chair_No = 10 ويتم معه جلب الأسم الأول والأخير من جدول Tabl_Emp بشرط PcDigt = PcDigt الذي تم جلبه من جدول Tabl_bus وعند عدم وجود الرقم Chair_No في جدول Tabl_Bus تظهر عبارة لم يتم التخصيص

 

عملت هذا الكود لكنه لم يأتي بنتيجه صحيحه

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

=DLookUp("[PcDigt]";"Tabl_bus";"[Num_rihla] = " & [Forms]![Frm]![Num_rihla] And "[Num_intr] = " & [Forms]![Frm]![Num_intr] And "[Chair_No]=10")

ارجو المساعده ولكم جزيل الشكر

dlook.rar

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

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

خلينا نمشي خطوة خطوة لانك انت اللي فاهم الموضوع:

بعيداً عن النموذج المراد ادخال القيمة فيه، دعنا نضع ارقاماً صحيحة كي نصل الى النتيجة

 

اقتباس

حيث يجلب يجلب رقم PcDigt من الجدول Tabl_bus الى الحقل s10 مثلا بشرط أن يكون حقل Chair_No = 10

=DLookUp("[PcDigt]","[Tabl_bus]","Chair_No = 10")

هنا احضرنا رقم (PcDigt) والنتيجة = 20 حسب الجدول لديك

اقتباس

ويتم معه جلب الأسم الأول والأخير من جدول Tabl_Emp بشرط PcDigt = PcDigt الذي تم جلبه من جدول Tabl_bus

في جدول (Tabl_Emp) لا يوجد رقم (PcDigt) بقيمة 20 كي يتم عمل شرط بينهما لاحضار الاسم الاول والاخير.

اقتباس

وعند عدم وجود الرقم Chair_No في جدول Tabl_Bus تظهر عبارة لم يتم التخصيص

عند الوصول الى القيمة الصحيحة سنستخدم امر IIF لاظهار عبارة لم يتم التخصيص

أرجو التوضيح وان شاء الله سوف نصل الى نتيجة

 

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

شكرا لتجاوبك استاذنا @AlwaZeeR

الطلب متشابك قليلا ولعلي لم اتمكن من إيصاله بالصورة الصحية

لذلك سأشرح ما هي العلاقة بين الجدولين والموضوع

اولا الموضوع عبارة عن حجز مقاعد على حافلة

الجدول Tabl_ Emp جدول بيانات الركاب

الجدول Tabl_bus هو جدول الحافلة

الحقل PcDigt i هو رقم الراكب

الحقل Chair_No هو رقم المقعد في الحافلة  ويقابله بالتقرير الحقول  من S1 إلى  S49

الحقل Num_rihla هو رقم الرحلة

الحقل Num_intr هو رقم الحافلة

5 ساعات مضت, AlwaZeeR said:

حيث يجلب يجلب رقم PcDigt من الجدول Tabl_bus الى الحقل s10 مثلا بشرط أن يكون حقل

Chair_no رقم المقعد يقابله بالتقرير المقعد الذي هو s1 الى s49

 

5 ساعات مضت, AlwaZeeR said:

في جدول (Tabl_Emp) لا يوجد رقم (PcDigt) بقيمة 20 كي يتم عمل شرط بينهما لاحضار الاسم الاول والاخير.

اعتذر هنا لاني وضعت ارقام عشوائية وتم التعديل في المرفق

حيث ان رقم الراكب يجب أن يكون موجود بكلا الجدولين

5 ساعات مضت, AlwaZeeR said:

وعند عدم وجود الرقم Chair_No في جدول Tabl_Bus تظهر عبارة لم يتم التخصيص

من الممكن ان يكون لم يتم ادخال رقم المقعد بالجدول

مثلا لم يتم تسجيل رقم مقعد رقم 33 في الجدول (اي لايوجد سجل حسب الشروط )

يتم اظهار عبارة لم يتم التخصيص في مربع النص غير المنظم بالتقرير ( غير مخصص )

1.png.b6a97f67cc595c12da44601950502ce4.png

المطلوب يتم اظهار رقم الركاب واسمه في الحقل

2.png.b6c7bb9136759434209e77fc8862427c.png

ملاحظة : في حالة وجود سجل Chair_no  ولم يتم تسجيل رقم PcDigt يظهر  نص في مربع النص بالتقرير شاغر

انا اردت استخدام هذه الطريقة للمحافظة على تنسيق التقرير

واذا كان هناك طريقة افضل فلا مانع

 

وهذا المرفق الجديد بعد تعديل البيانات

dlook.rar

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

العفو عزيزي

فهم السؤال ثلثي الاجابة والشرح الآن وافي ومفهوم

ضع الكود مع تغيير رقم الكرسي حسب ما هو موجود في التقرير:

 

=IIf(DLookUp("Chair_no","Tabl_bus","Chair_no=1 And Num_rihla=[Forms]![Frm]![Num_rihla] And  [Forms]![Frm]![Num_intr]"),DLookUp("[Fname] &  ' ' & [Family]","Tabl_Emp","PcDigt = " & DLookUp("PcDigt","Tabl_bus","Num_rihla=[Forms]![Frm]![Num_rihla] And  [Forms]![Frm]![Num_intr] And [Chair_no]=1")),"شاغر")

نأتي الآن الى الطريقة السهلة والكود الاصغر:

ننشئ استعلام ونسميه مثلاً: Qry ثم نجعله مصدر التقرير ونستخدم هذا الكود:

=IIf(DLookUp("[Chair_No]","[Qry]","[Chair_no]=1"),DLookUp("[Fname] &  ' ' & [Family]","[Qry]","[Chair_no] = 1"),"شاغر")

 

تفضل جرب ووافني بالنتيجة

 

 

Waz-dlook.rar

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

7 ساعات مضت, AlwaZeeR said:

تفضل جرب ووافني بالنتيجة

ممتاز استاذنا

فقط اردت أن أشير إلى ( نص شاغر )

حيث انها تظهر حتى في حالة عدم وجود رقم في حقل Chair_no بالجدول Tabl_bus

اريد عند وجود الرقم  Chair_no وعدم وجود رقم راكب في نفس السجل إظهار نص( شاغر) وعند عدم وجود سجل بنفس الرقم Chair_no بالجدول إظهار عبارة ( غير مخصص )

شاكر ومقدر تعاونك ،،،

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

1 ساعه مضت, AlwaZeeR said:

تفضل عزيزي

جرب ووافني بالنتيجة

الله يعطيك العافية استاذنا

الهدف من طلبي  كان المحافظة على تنسيق التقرير لأنه يظهر الحقول على شكل مخطط ( كروكي )

لمقاعد الحافلة من الداخل

وهذه الطريقة لن تخدمني في المحافظة على تنسيق التقرير

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

 

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

يزيدك عافية اخي الكريم

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

سواء كان تقرير كروكي او غيره

استخدم:

=DLookUp("[Result]","[Qry]","chair_No=1")

مع تغيير رقم الكرسي بحسب مكانه في التقرير

::

تحياتي

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

9 ساعات مضت, AlwaZeeR said:

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

صباح الخير استاذنا

وشكرا لتحملك وسعة صدرك

معذرة منك الطريقة الأخيرة لاتفي بالغرض

2018-03-14_07-21-45.png.5805d5535f4f3b364d47165571822d44.png

*واردت ان اضيف أن اعتماد التقرير بشكل كلي في السجلات على جدول Tabl_bus جدول Tabl_Emp  فقط نجلب منه الاسم اذا كان رقم الراكب موجود بجدول Tabl_bus

* ارغب في حل غير الأستعلام  حتى لو كان عن طريق كود Vba

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

بعد عدة محاولات توصلت الى هذه الطريقة عن طريق الكود التالي في حدث عند الطباعة

وأتى بنتائج جيدة

يعاب عليه ان الكود طويل ويحتاج اني اضعه لكل حقل من حقول التقرير

'نجلب رقم الراكب من جدول الحافلة 
If DLookup("Chair_no=2", "Tabl_bus", "Chair_no=2 And Num_rihla=[Forms]![frm]![Num_rihla]And Num_Itinerary_ID=[Forms]![frm]![Num_Itinerary_ID]") And _
DLookup("PcDigt", "Tabl_bus", "Chair_no=2 And Num_rihla=[Forms]![frm]![Num_rihla]And Num_Itinerary_ID=[Forms]![frm]![Num_Itinerary_ID]") Then
' نجلب الاسم حسب رقم الراكب الذي تم جلبه في الحقل بالتقرير 
Me.S2 = DLookup("PcDigt", "Tabl_bus", "Chair_no=2 And Num_rihla=[Forms]![frm]![Num_rihla]And Num_Itinerary_ID=[Forms]![frm]![Num_Itinerary_ID]")
Me.S2 = DLookup("[FName] &  ' ' & [Family]", "Tabl_Emp", "PcDigt = S2")
' عد السجلات التي تحتوي على رقم المقعد
ElseIf DCount("id", "Tabl_bus", "Chair_no=2 And Num_rihla=[Forms]![frm]![Num_rihla]And Num_Itinerary_ID=[Forms]![frm]![Num_Itinerary_ID]") < 1 Then
Me.S2 = "غير مخصص"
' عد السجلات التي تحتوي على رقم المقعد ولاتحتوي على رقم الراكب 
                                                                                                                                              ElseIf DCount("id", "Tabl_bus", "Chair_no=2 And Num_rihla=[Forms]![frm]![Num_rihla]And Num_Itinerary_ID=[Forms]![frm]![Num_Itinerary_ID]And[PcDigt]=null") = 0 Then
Me.S2 = "شاغر"
End If

لو أمكن اختصار هذا الكود

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

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