![]() |
|
الفلترة باستخدام Master Detail بين تاريخين - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : الفلترة باستخدام Master Detail بين تاريخين (/showthread.php?tid=1269) |
الفلترة باستخدام Master Detail بين تاريخين - thebestbenz - 19-10-2009 الجداول كالأتي :
AssetTable
ID_______ Asset_Desc 1 ___________ Asset1 2 ___________ Asset2 3 ___________ Asset3 WorkorderTable No________________ Date_________________WO_Desc________ Asset_ID 1______________ 21/5/2009_____________ **********_____________ 3 2______________ 4/7/2009 ______________ **********_____________ 2 3______________ 7/4/2009 ______________ **********_____________ 3 4______________ 8/6/2009 ______________ **********_____________ 1 *__________________ * ______________________ * _________________ * كيف إصدار تقرير بأوامر العمل بين تاريخين مثل 1/1/2009 و 30/1/2009 لكلِAsset
Workorders REPORT
انا استخدام QReport_____________________________________________________________________ Asset Name\ Asset1 WO. No_______ Date______________ WO. Description 1 __________ 1/9/2009_______________ ********** 5 __________ 6/9/2009_______________ ********** 14 _________ 8/9/2009_______________ ********** * ______________ * ____________________ * Asset Name\ Asset2 WO. No_______ Date______________ WO. Description 2 __________ 11/9/2009_____________ ********** 4 __________ 26/9/2009_____________ ********** 6 __________ 8/9/2009______________ ********** * ______________ * ___________________ * Asset Name\ Asset3 WO. No_______ Date______________ WO. Description 11 _________ 13/9/2009______________ ********** 3 __________ 17/9/2009______________ ********** 9 __________ 23/9/2009______________ ********** * ______________ * ______________________ * شكرا الفلترة باستخدام Master Detail بين تاريخين - tempuser - 19-10-2009 أولا يجب عمل استعلام يحتوي على البيانات المطلوبة ثم استخدام هذا الاستعلام في التقرير سأعطيك مثال والباقي عليك ملاحظة هامة جدا ضعها في دماغك ولا تنساها لا تستخدم في تسمية الحقول أي اسم محجوز لأنها يسبب لك المشاكل ان لم يكن الآن وإلا فيما بعد لذلك غير حقل Date الى مثلا wdate كود : Select Asset_Id
From Assettable as A inner join workordertable W on a.asset_id=w.asset_id
where w.date between (Date1_Value and Date2_Value)
Group by Asset_IDملاحظة أخرى أنا غير متواجد بشكل كثير وانما نادرا ما اشارك لعدم تفرغي مع التوفيق الفلترة باستخدام Master Detail بين تاريخين - thebestbenz - 20-10-2009 بارك الله فيك على الرد و لكن للأسف لم تفلح معي اخي العزيز عليك ان تجرب عندك الكود قبل كتابته انا حاولت اضع الجداول لاحصل على الاجابة الصحيحة و ليس المحتملة لقد عملت جميع الاستعلامات الممكنة اما تسمية الحقول فبارك الله فيك على المعلومة و الحقول بالاعلى عبارة عن امثلة فقط إقتباس :أنا غير متواجد بشكل كثير وانما نادرا ما اشارك لعدم تفرغي ان تكمل معي لاني لم اجد الحل منذ فترة طويلة وشكرا الفلترة باستخدام Master Detail بين تاريخين - tempuser - 20-10-2009 السلام معليكم أخوي TheBestBenz يبدو أني نسيت ان استخدم المشكلة AS للجدول الثاني عدا عن ذلك هذه الجملة صحيحة مع ازالة الأقواس في جملة الشرط كود : Select Asset_Id
From Assettable as A inner join workordertable AS W on a.asset_id=w.asset_id
where w.date between Date1_Value and Date2_Value
Group by Asset_IDكما أنني قد تركت مجال البرمجة منذ فترة طويلة أو بعيدة فلا تتوقع أن اتذكر حرفيا كيف يتم فعل ذلك ولكني أردت بجوابي السابق أن أفتح لك الباب ولا بد دائما من بذل الجهد تلو الجهد في سبيل الوصول للمطلوب :monster2: وبخاصة المنتديات الرسمية وهي بالتأكيد باللغة الانجليزية والعلم صيد والكتابة قيده :monster1: عموما أنا لا أملك أدوات التفرير الذي أنت تستخدمه ولا لغة الدلفي المناسبة في الوقت الحالي :oops: وعلى فرض ما يلي أنظر الملف المرفق والذي فيه صورة للجداول ــ لا ادري كيفية ارفاق صورة مع الرد أولا يجب تجهيز متطلبات عمل التقرير ويوجد طريقتين وهنا أننا لا أذكر الحلول الاحترافية بل ابسط واسهل حل الاولى هي استخدام مكوننين للجدولين وربطهما مع بعض بعلاقة أب وابن واستخدام خاصية الفلتر في الابن قبل استدعاء التقرير وقد يكون هذان المكونان
Both are TTables or Both are TQuery or TTable & TQuey.....
وهنا يجب استخدام الادوات المناسبة في التقرير وانا لا أذكر اسمائها ولكن على ما اعتقدReportband Detail band ُم تعديل الخصائص المناسبة والتي تحدد العلاقة بينهما كأب وإين أما الطريقة الثانية فهي استخدام كائن استعلام مثل TQuery ثم استخدام جملة الاستعلام التي ذكرتها كود : Select ADesc, No, WDate, WDesc
From Assets inner join workorders on ID=AID
where wdate between Date1_Value and Date2_Value
Group by ADesc, No, WDate, WDescGroup Bands Headers & footers يمكنك الرجوع الى البرنامج الذي يأتي مع الدلفي ويظهر فيه أنواع مختلفة من التقارير وكيفية عملها بشكل اساسي ففيه فائدة كبيرة جدا **** أن أكون قد أفدتك بالرغم من عدم ذكري للحل الكامل وبالشكل الصحيح مئه في المئة و**** المعذرة لأنني كما سبق وقلت اني لم استخدم الدلفي منذ زمن وربما في بعد قد استطيع اعطائك الحل الكامل في حال وجدت Quick report الذي يناسب اصدار اللغة الذي لدي حيث أنها تجريبية الفلترة باستخدام Master Detail بين تاريخين - thebestbenz - 20-10-2009 السلام عليكم و رحمة الله و بركاته أخي TemUser صدقني لقد عدلت في جملة الاستعلام و استعملت غيرها و غيرها و صدقني لقد حاولت كثيرا و لذلك لجأت الى المنتديات و ستجد نفس السؤال في العديد من المنتديات الانجليزية وهذا المنتدى العربي الوحيد الذي راسلته و كونك تركت البرمجة فهذه خسارة لنا لانه من الواضح تمكنك في هذا المجال و لانك نسيت فاذكرك ان جداول الابن و حسب علمي لا يمكن فلترتها و هذه مشكلتي بالمناسبة انا استخدم ADOGO اي ADOQuery ADOTable و الله الموفق وشكرا الفلترة باستخدام Master Detail بين تاريخين - format82 - 21-10-2009 سلام عليك قم بتعديل هذا الكود علي حسب اسماء جداولك حيث q_account و t_client اسماء جداول و date_buy حقل التاريخ كود : q_account.Close;
q_account.SQL.Clear ;
q_account.SQL.Add('select * from t_account,t_client where t_account.name_c=t_client.name_c and t_account.date_buy between :p1 and :p2 order by date_buy') ;
q_account.Parameters.ParamByName('p1').Value := datetostr(datetimepicker1.Date) ;
q_account.Parameters.ParamByName('p2').Value := datetostr(datetimepicker2.Date) ;
q_account.Open;
//q_account.Active := true ;
if q_account.Recordcount=0 then
ShowMessage('áÇ ÊæÌÏ ÈíÇäÇÊ ãÊæÝÑ Ýí åÐÇ ÇáÔåÑ')
else
Form9.QuickRep1.Preview;سوف تجد في هذا المسار امثلة C:\Program Files\Borland\Delphi7\Demos\Quickrpt الفلترة باستخدام Master Detail بين تاريخين - tempuser - 21-10-2009 أنظر الملف المرفق حيث فيه شرح كامل زبالتفصيل للحل مع نموذج قاعدة البيانات وبالتوفقي ونسمع دعائكم بظهر الغيب والله الموفق ملاتحظة أخيرة قد كتبت ما كتبت على عجلة من أمري فيجب التدقيق بالمسميات لتفادي الأخطاء إن وجدت الفلترة باستخدام Master Detail بين تاريخين - thebestbenz - 22-10-2009 السلام عليكم و رحمة الله و بركاته أخي TempUser جزاك الله كل خير. و الله انا عاجز عن الشكر ما شاء الله تبارك الله شكرا على الوقت و المجهود الذي بذلته خارق للعادة و مطابق للمطلوب تماما حفظك الله من كل شر و رزقك و اهلك كل خير و شكرا على تحفيزك لي بالبحث في بداية الامر و للعلم ما طرحت الموضوع الا لما عجزت و تصدعت بارك الله فيك و شكرا و لا تحرمنا علمك السلام عليكم |