PDA

View Full Version : تهیه یه گزارش که ستونهایش از رکوردهای یک جدول تشکیل میشود...



tayebeh
یک شنبه 26 شهریور 1385, 12:14 عصر
باسلام

من یه جدول برای غذاها تعریف کرده ام ، بصورت زیر :

نام غذا-------- قیمت واحد
کوبیده---------15000
چلوکباب-------25000

یه جدول اعضای باشگاه دارم که بصورت زیر هستش:

شماره پرسنلی-----تاریخ ------وعده----- رکورد آی دی
5454-------------1385/06/26---شام------1
5555-------------1385/06/26---ناهار------2

یه جدول دیگه هم دارم که در اون لیست غذاها آورده شده که بصورت زیر هستش:

رکورد آی دی ----نام غذا----تعداد
1--------------کوبیده------8
2-------------کوبیده-----5
1--------چلوکباب-------3


حالا من می خوام یه گزارشی به فرمت زیر تهیه کنم :

شماره پرسنلی----کوبیده---چلوکباب
5454------------8-----------3
5555-----------5-----------0

همانطور که می بینید ، ستونهای گزارش من(هدر) در واقع رکوردهای جدول غذاها هستند. حالا سئوال اینجاست که آیا میشه با کریستال ریپورت این گزارش رو طراحی کرد؟
درحال حاضر من این گزارش رو با دیتاگرید درست کردم ، و برای چاپ کردن دیتاگرید معمولی هم از یک کلاس خاص استفاده می کنم ، ولی مشکلش اینه که گزارش رو بصورت زیر چاپ می کنه:

چلوکباب------کوبیده---------شماره پرسنلی
3-------------8----------------5454
0------------5----------------5555

در واقع از چپ به راست چاپ می کنه.

کلا سئوالم اینه که چطور باید این مدل گزارشات رو که داینامیک هستند ، درست کرد؟

reza_rad
یک شنبه 26 شهریور 1385, 12:31 عصر
ببینید شما برای اینکه گرید رو پر کنید در واقع دارید چند تا جدول رو باهم join می کنید و خروجی رو می ریزید توی گرید. درسته؟
خب حالا برای کار با کریستال هم می تونید دقیقا اینکارو بکنید.
دو راه هست:
1- با stored procedure
2- بدون stored procedure

برای راه اول شما کل کوئری تون رو توی استورد پروسیجر بنویسید و خروجی اون رو خیلی راحت بیارید توی کریستال بدون هیچ مشکلی.
اما برای راه دوم شما جدول ها یی که با هم باید join بشن رو توی کریستال بیارید...

برای ایجاد join ها از select expert استفاده کنید(توی این تالار بگردید پیدا می کنید)

حالا تنها مشکلی که می مونه اینه که چطور پارامترها رو از برنامه به کریستال بفرستید
که این هم به مقدار بسیار زیاد تحت عناوین پارامتر-دینامیک و ... توی این تالار بحث شده.

tayebeh
یک شنبه 26 شهریور 1385, 12:46 عصر
باسلام
شما درست می فرمائید با join میشه این مسئله رو حل کرد ولی به ازای هر شخصی ، نام غذاها تکرار میشه . به عبارتی غذاها در سطر قرار می گیرند ولی من می خواهم نام غذاها یکبار در هدر گزارشم بیاید و به ازای هر رکوردی تکرار نشود . در ضمن می خواهم همه غذاها در هدر گزارشاتم باشند چه عضوی از آنها استفاده کرده باشد چه نکرده باشد.تاکید من بیشتر بروی قالب گزارش هست ، وگرنه همانطور که گفتید با join مسئله حل میشه.

اس کیو الی که شما مد نظرتون هست به این صورت میشه :

نام غذا-----شماره پرسنلی----- تعداد
کوبیده-----5454-----------------8
کوبیده---5555----------------5
چلوکباب--5454--------------3


ولی چیزی که مد نظر من هست قالبش با این چیزی که شما می گین فرق داره.
لطفا بیشتر توضیح بدین

reza_rad
یک شنبه 26 شهریور 1385, 13:02 عصر
می تونید یک جدول تمپ بسازید و اطلاعات مثلا غذا ها رو داخلش بریزید. عنوان هر ستون یک غذا و ...
بقیه اطلاعات مربوط به اونها رو هم توی سطرهای اون بریزید...

بعد توی کریستال از این جدول استفاده کنید.

اما پردازش بیشتری می بره و فضای بیشتری می گیره که باعث میشه زیاد روش خوبی نباشه این.

البته شاید راههای دیگه ای هم باشه که متاسفانه من نمی دونم.

Mahdavi
سه شنبه 28 شهریور 1385, 16:45 عصر
آیا تعداد رکوردهای جدول غذا ثابت هست. در اینصورت میشه با یک دستور select جواب رو گرفت

tayebeh
چهارشنبه 29 شهریور 1385, 06:43 صبح
نه تعداد رکوردهای جدول غذا ثابت نیستند و امکان دارد زیاد شوند یا اینکه نام غذاها ویرایش شود.