• 0
النبهاني

كيف أعمل استعلام لتقرير به مجاميع وشروط كثيرة ( اعجزني ! )

سؤال

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

لدي قاعدة بيانات مخطط جداولها كما يلي :

post-45201-1185134920_thumb.gif

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

الجدول MainTable يحتوي على الحقول الاساسيه وهو عباره عن سجل تغذيه لجناح كامل بالمستشفى لوجبه معينه ، و يوم معين .

الجدول MealList يحتوي على حقلين ولا يمكن للمستخدم استخدام هذا الجدول او الوصول اليه حيث الغرض منه حفظ قائمة بالوجبات ( فطور ، غداء ، عشاء ، سحور ، إفطار) ، والامر مشابه للجدولين WardList المخصص لتخزين اسماء الأجنحه ، والجدول TypeList المخصص لتخزين انواع الوجبات Normal,Special

من هذا كله لدي سؤال ارقني كثيرا واوقفني عاجزا اكمال برنامجي ، مشكله تواجهني لاول مره ، حاولت السؤال عدة مرات في المنتدى لكن مساعدة الشباب في المنتدى باءت بالفشل للأسف فقررت توضيح قاعدة البيانات بشكل كامل حتى يسهل الوصول الى الحل لأنني ارغب بعمل تقرير معقد نوعا ما !

ارغب بعمل تقرير يظهر بالشكل التالي :

post-45201-1185134934_thumb.gif

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

فكيف أعمل هذا التقارير بواسطة استعلام ؟ علما بأنني أستخدم Access كقاعدة بيانات فقط وليس كتطبيق كامل حيث انني ابني البرنامج بواسطة Visual Basic .Net .

وأنا بإنتظاركم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

10 إجابة على هذا السؤال .

  • 0

الإجابة بشكل مباشر على سؤالك أمر غير بسيط, فالسؤال الذي تطرحه هو سؤال أساسي و للإجابة عليه بشكل كامل لا بد من المرور على مواضيع مختلفة و عديدة. بشكل سريع أستطيع أن أقول لك أنك بحاجة لأن تصمم SQL query قادرة على استحصال المعلومات بطريقة متوازية مع تلك التي استخدمتها في تصميم قاعدة البيانات.

بهدف الوضوح لقد قمت بإعادة طرح سؤالك بافتراض قاعدة بيانات تحتوي على علاقات مشابهة لمثالك. في هذه القاعدة هناك ثلاث Table ,و هي Table1, Table2, Table3.لاحظ أن Table1 تمثل MainTable في سؤالك.

ال SQL query التي يحتاج الجدول الذي يظهر في سؤالك هي من نوع Sum query. فأنت لا تحتاج لسرد كل الجداول و إنما لحاصل عملية جمع وفق كريتير Criteria معين. بالنسبة لمثالك الحقل الذي نريد الجمع وفقه هو Field1 في Table2. في حين أن الحقول الرابطة بين الجداول هي Table2.ID = Table1.Field1FK و Table3.ID = Table1.Field2FK.

فيما يلي الكويري التي استخدمتها في هذا المثال كما تظهر من خلال قائمة View->SQL View في برنامج ال ACCESS :

SELECT Sum([Table1].[Field3]) AS Expr1, Sum([Table1].[Field4]) AS Expr2

FROM Table3 RIGHT JOIN (Table2 LEFT JOIN Table1 ON Table2.ID = Table1.Field1FK) ON Table3.ID = Table1.Field2FK

WHERE (((Table2.Field1)=[?]));

أنصحك بالبدء بمحاولة تطبيق المثال الذي قدمته و من خلاله فهم طريقة عمل الكويري. إذا قمت باجتياز هذه المرحلة بنجاح فعندها يكون من السهل عليك حل المشكلة التي أنت بصددها.

أرجو أن تساعدك هذه الإجابة في تنفيذ المهمة التي أنت بصددها, و الله ولي التوفيق.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اهلا بك اخي العزيز ، وشكرا على الوقوف بجانبي :lol:

في الحقيقة حاولت ان افهم كلامك ولكنني واجهت مشكله في تطبيق عباره الاستعلام SQL Statement وهي انني لم افهم ما تقصده بـ Table2,Table3 فقد تهت بالرغم من انني وضحت لك اسماء الجداول ومخطط كامل لقاعدة البيانات :wacko:

واود اخبارك بانني ارغب بتعلم الحل وتطبيقه بأسرع ما يمكن ايضا ولا ضرر من تسريع الحل ثم شرحه لإني متأخر في تسليم البرنامج بسبب مثل هذه التقارير التي تمر علي لاول مره للأسف لقله الخبره في هذا المجال <_<

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي الفاضل النبهاني

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

قد يكون الإستعلام معقد بعض الشيء او انني لم افهم آلية عمله بالضبط كما تريد ولكن هذه محاوله

1. تم انشاء استعلام جدولي لكل من الإستعلامات التالية Type و Meal و Ward بناء على التاريخ rDATE ثم تم عمل استعلام تجميعي لكل هذه الإستعلامات في استعلام واحد وهو ALL مبني على الحقل rDATE

2. يوجد استعلام تحديد به جميع الحقول ولم يتم عليه اي تغييرات لغرض الفائدة فقط .

SumQuery.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

بالانتظار

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الحمد لله انتهت المشكله وحللتها وعملت اعقد تقرير رأيته في حياتي !

حللت المشكله بعد ان رأيت استخدام الاخت زهرة للاستعلامات من نوع Crossstab ، كل العملية كانت بعمل استعلام يحتوي نفس الحقول الموجوده في الجدول MainTable لكن وضعت فيه الحقول WardName,TypeName,MealName بدلا من الحقول Ward,Type,Meal ثم قمت باستخدام اداة خاصة في تقارير مايكروسوفت تدعى Matrix وهي التي تستخدم في عمل التقارير المتداخله Crosstab Reports وقمت بعمل التجميعات فيها وانتهت المشكله وتم توليد التقرير بالضبط كما أريده !

شكرا للجميع ... ارجو من الاخوة المشرفين نقل الموضوع الى قسم التقارير في منتدى الـ net.

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بارك الله فيك أخي النبهاني

والحمد لله ان مشكلتك تم حلها

سيتم نقل هذه المشاركة الى قسم التقارير في منتدى الـ net.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي العزيز ابوعزام

شكرا لك على المشاركه والاقتراح الطيب ، لكن في حالتي لن ينفع استخدام علاقه وهو لسبب بسيط انه لا يشترط وجود سجلات في كل يوم تحتوي النوع Special والذي سنصنف الجداول عليه لربطها او الاستعلامات ، وبالتالي فإن ذلك السجل لن يظهر وهذه مشكله كبيرة .. كذلك كثره الشروط ستحتم انشاء عدة استعلامات وربطها في استعلام واحد مما يخفض كفاءه البرنامج بشكل كبير وكذلك قاعدة البيانات .

وشكرا للاخت زهره على نقل الموضوع .

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أخي الحبيب النبهاني أرجوا مراجعة موضوعي على هذا الرابط حتى تفهم ذلك

http://www.arabteam2000-forum.com/index.php?showtopic=133980

(لا أقصد بالعلاقة التي تعملها في أكسس بل تعمل العلاقة من داخل كريستال ريبورت)

وشكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا لك اخي الكريم على الاهتمام

ولكنني ابعد كل البعد عن كريستال ريبورت واستخدم اداة التقارير الجديدة من مايكروسوفت Microsoft ReportViewer

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .