الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

نتيجة غير صحيحة عند تنفيذ استعلام بناء على استعلام آخر

مغلقمُجاب
بدأه حسام الشامي في 6 أكتوبر 2013 · 4 رد · 692 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أحد الأعضاء طلب  مني المساعدة في قاعدة بيانات , و ظهرت معنا المشكلة التالية :

قاعدة البيانات بسيطة .

جدول الموظفين (Employee) و جدول القروض (Cridi)  و جدول الادوات الكهربائية  (ElectroMeng) و جدول الخصميات الأخرى  (OtherDiscount) . طبعا جدول الموظفين يرتبط مع الجداول الأخرى بعلاقة واحد لمتعدد .

 

الآن قمنا بعمل استعلام (qryDiscountReport_Contract)  يجلب الموظف و مجموع القروض و مجموع الأدوات الكهربائية و مجموع الخصميات لكل موظف و هو يعمل بشكل جيد .

الآن ببساطة , نريد عمل استعلام  (qry_rptDD_3) من بيانات الاستعلام السابق يجلب فقط الموظفين الذين هم "متعاقد كامل" أو "متعاقد جزئي" أو "عون نظافة" و لديه قرض أو ادوات كهربائية أو خصم .

أي ببساطة فلترة سجلات الاستلام السابق .. 

المشكلة أنه يقوم بالفلترة لكن لا تظهر القيم في بعض الحقول ..كما تظهر الصورة المرفقة ..

برجاء المساعدة و جزاكم الله خيرا ..

MM_ArabTeam.rar

post-94677-0-67390300-1381089679_thumb.p

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#2

اخي الكريم : حسام

 

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

 

وجزاك الله كل خير على المشاركة معنا في قسم الأكسيس

 

تفضل الإستعلام بعد التعديل

 

 

post-15367-0-15491900-1381117270_thumb.g

 

 

 

 

za-MM_ArabTeam-UP.rar

 

 

بالتوفيق

3
#3

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

بارك الله بك أخت أم عهود .. الاستعلام يعمل بشكل صحيح  ..

لكن لم اعرف سبب المشكلة , حبذا لو تم شرح بسيط كي تعم الفائدة ..

الاستعلام القديم هو : 

SELECT qryDiscountReport_Contract.EmployeeID, qryDiscountReport_Contract.[Nom et Prénom], qryDiscountReport_Contract.detach, qryDiscountReport_Contract.SSSS_Cridi, qryDiscountReport_Contract.SSSS_ElectroMeng, qryDiscountReport_Contract.SSSS_OtherDiscount, qryDiscountReport_Contract.Remaining
FROM qryDiscountReport_Contract
WHERE (((qryDiscountReport_Contract.detach)="متعاقد كامل" Or (qryDiscountReport_Contract.detach)="متعاقد جزئي" Or (qryDiscountReport_Contract.detach)="عون نظافة") AND (((Nz([SSSS_Cridi],0)+Nz([SSSS_ElectroMeng],0)+Nz([SSSS_OtherDiscount],0)))>0));

 و الاستعلام بعد التعديل هو : 

SELECT qryDiscountReport_Contract.EmployeeID, qryDiscountReport_Contract.[Nom et Prénom], qryDiscountReport_Contract.detach, qryDiscountReport_Contract.SSSS_Cridi, qryDiscountReport_Contract.SSSS_ElectroMeng, qryDiscountReport_Contract.SSSS_OtherDiscount, qryDiscountReport_Contract.Remaining
FROM qryDiscountReport_Contract
WHERE (((qryDiscountReport_Contract.detach)="متعاقد كامل") AND (((Nz([SSSS_Cridi],0)+Nz([SSSS_ElectroMeng],0)+Nz([SSSS_OtherDiscount],0)))>0)) OR (((qryDiscountReport_Contract.detach)="متعاقد جزئي") AND (((Nz([SSSS_Cridi],0)+Nz([SSSS_ElectroMeng],0)+Nz([SSSS_OtherDiscount],0)))>0)) OR (((qryDiscountReport_Contract.detach)="عون نظافة") AND (((Nz([SSSS_Cridi],0)+Nz([SSSS_ElectroMeng],0)+Nz([SSSS_OtherDiscount],0)))>0));

 فالشرط في عبارة الـــ Where  هو نفسه منطقيا في الحالتين و لكن كتب بطريقة مختلفة .

و لو فرضنا أن الشرط غير صحيح , فلماذا يتم عرض السجل و لكن قيمة الحقل فارغة ؟

جزاكم الله خيرا .

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#4 أفضل إجابة

اخي الفاضل : حسام

 

بارك الله بك وجزاك الله كل خير على التعقيب

 

دعني اشرح لك بصورة مبسطة الفرق بين الإستعلامين مع انهما للوهلة الأولى يبدون متشابهين ولكن الإستعلام يقوم بالتفريق بينهم من خلال وضع المعايير

 

 

بالنسبة للإستعلام الأول :

 

نلاحظ ان المعيار  هو "متعاقد كامل" او "متعاقد جزئي" او "عون نظافة"  ثم في آخر المعايير ( حقل المتبقي ) تم وضع  قيمة  اكبر من الصفر

 

الآن الإستعلام سيكون مخير بين عدم اظهار اي بيانات اي يكون الإستعلام فارغ او ان يقوم بإظهار البيانات ولكن بقيم فارغه لأن هناك بعض الشروط تحققت وبعضها لم يتحقق

 

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

 

ولكن عندما نضع معيار اكبر من الصفر فإن الإستعلام لن يقوم بإظهار القيم بل ستكون قيم خاطئة او فارغة كما حدث معك لأن شروط المعايير لم يتم تطبيقها بشكل صحيح

 

 

 

اما بالنسبة للحل المعطى لك بعد تعديل المعايير في الإستعلام فإنه يظهر كل القيم بصورة صحيحة والسبب في ذلك اننا استخدمنا  خاصية  OR  و  AND  لكل معيار على حده

 

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

 

 

بالتوفيق

تم تعديل هذه المشاركة بواسطة zahrah في 6 يناير 2014 في 00:01

3
#5

بارك الله بك أخت أم عهود على التوضيح و جزاكم الله عنا خيرا.

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…