PDA

View Full Version : سوال: گزارش گیری پیچیده



mhsmity
یک شنبه 13 مرداد 1392, 18:04 عصر
باسلام:
اگه بنده این همین گزارش گیری رو داخل کریستال ریپورت بخوام چی کار باید انجام بدم.
می دونم که باید پایگاه داده خودم رو حسابی تشریح کنم.

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

به طوری کلی اگه این چنین گزرازشات پیجده به طور خورد باید چی کار کنم؟
روش پیاده سازی یا طراحی چه طوری می شه؟

108499


تعداد کل کلاس ها: براساس تاریخ عضویت محاسبه می شود. مثلا آقای احمدی از برج 4 عضو بوده و کلاس های فرودین ماه و خرداد ماه برای ایشان لحاظ نمی شود.
تعداد حضور : براساس تعداد کلاس های که حق شرکت کردن داشتن، چند حاضری وجود دارد.
درصد حضور: مثلا ردیف سوم آقای رضایی

(3/4)*100= 75%

ma.rad
یک شنبه 13 مرداد 1392, 18:12 عصر
حالا مشکل شما کجاست؟

mhsmity
یک شنبه 13 مرداد 1392, 18:18 عصر
حالا مشکل شما کجاست؟
از توجه شما ممنون
طبق تصویر زیر خروجی زیر رو درام. حالا چه طور در کریستال ریپورت ستون های فروردین ماه خرداد ماه و ... رو طراحی کنم.

108504
تو این شکل انسجام 4 منظور همان کلاس های فروردین ماه و غیروه هستش.

mahtab.kamali
دوشنبه 14 مرداد 1392, 01:14 صبح
از توجه شما ممنون
طبق تصویر زیر خروجی زیر رو درام. حالا چه طور در کریستال ریپورت ستون های فروردین ماه خرداد ماه و ... رو طراحی کنم.

108504
تو این شکل انسجام 4 منظور همان کلاس های فروردین ماه و غیروه هستش.
اگه تمامی ماهها توی یه سطون ثبت می شن می تونین برعکسش کنین یعنی ستون رو به ردیف تبدیل کنین و اطلاعات هر ماه رو توی یه سطون ویژه داشته باشین

mhsmity
دوشنبه 14 مرداد 1392, 02:09 صبح
اگه تمامی ماهها توی یه سطون ثبت می شن می تونین برعکسش کنین یعنی ستون رو به ردیف تبدیل کنین و اطلاعات هر ماه رو توی یه سطون ویژه داشته باشین
فکر نکنم عملی باشه .
در هر ماه یک کلاس برگزار میشه یعنی ممکنه تو یک سال خاص تعداد 12 تا ماه داشته باشیم. حالا داخل این عکس 4 ماه بیشتر نداریم.
بنده در کریستال ماه ها رو براساس گروه کردم ولی یه جور دیگه نمایش می ده ماه اول رو نمایش میده بعد می ره سراغ ماه بعدی که تو چندین صفحه می شه.

می خوام این شکلی که گذاشتم نمایش داره بشه.

khokhan
دوشنبه 14 مرداد 1392, 02:34 صبح
فکر نکنم عملی باشه .
در هر ماه یک کلاس برگزار میشه یعنی ممکنه تو یک سال خاص تعداد 12 تا ماه داشته باشیم. حالا داخل این عکس 4 ماه بیشتر نداریم.
بنده در کریستال ماه ها رو براساس گروه کردم ولی یه جور دیگه نمایش می ده ماه اول رو نمایش میده بعد می ره سراغ ماه بعدی که تو چندین صفحه می شه.

می خوام این شکلی که گذاشتم نمایش داره بشه.
ستون ماه رو با یه pivot table به چند ماه تفکیک کنین ونتیجه کوئری رو بریزین داخل گرید وبعد بفرستین به گزارش
لینک (http://www.codeproject.com/Articles/30387/SQL-Pivot-and-Table-Adapter)
لینک 2 (http://www.codeproject.com/Tips/500811/Simple-Way-To-Use-Pivot-In-Sql-Query)

mhsmity
دوشنبه 14 مرداد 1392, 02:46 صبح
ستون ماه رو با یه pivot table به چند ماه تفکیک کنین ونتیجه کوئری رو بریزین داخل گرید وبعد بفرستین به گزارش
لینک (http://www.codeproject.com/Articles/30387/SQL-Pivot-and-Table-Adapter)
لینک 2 (http://www.codeproject.com/Tips/500811/Simple-Way-To-Use-Pivot-In-Sql-Query)
این طورکه متوجه شدم تعداد باید مشخص باشه ولی بنده تعداد ستون ماه ها مشخص نیست.
درزم بنده برای فهم بشتر سوال خودم اسم ماه ها سال رو گذاشتم وگرنه هر کلاس که برگزاری میشه درای یه نام متفاوت هستش که بر اساس تاریخ برگزاری کلاس باید به صورت مرتب شده نمایش داده بشه

mhsmity
دوشنبه 14 مرداد 1392, 19:11 عصر
ستون ماه رو با یه pivot table به چند ماه تفکیک کنین ونتیجه کوئری رو بریزین داخل گرید وبعد بفرستین به گزارش
لینک (http://www.codeproject.com/Articles/30387/SQL-Pivot-and-Table-Adapter)
لینک 2 (http://www.codeproject.com/Tips/500811/Simple-Way-To-Use-Pivot-In-Sql-Query)

سلام یکم بنده گیج می زنم هنوز روی این مورد تسلط کافی پیدا نکردم اگه خروجی زیر رو داشته باشین چه طوری Pivot می کنید ؟
108583

کدها
SELECT x, name, DefultHore
FROM tblsummon

khokhan
دوشنبه 14 مرداد 1392, 19:45 عصر
سلام یکم بنده گیج می زنم هنوز روی این مورد تسلط کافی پیدا نکردم اگه خروجی زیر رو داشته باشین چه طوری Pivot می کنید ؟
108583

کدها
SELECT x, name, DefultHore
FROM tblsummon

درود برشما
هیچ هم مشکل نیست فقط یه خورده دقت بیشتر می خواد یه نمونه رو که قبلا برای یکی از دوستان درست کرده بودم رو براتون می گذارم
البته اینم بگم که با دیتابیس acsess کار شده و مسئله pivot در اکسس یه خورده با sql فرق داره اما در کل شباهتهای زیادی دارند
یه نگاه به این بنداز تا ادامه بحث رو پی بگیریم

mhsmity
دوشنبه 14 مرداد 1392, 20:07 عصر
اشکال این کدها چی که برای PIVOT خطا دارد؟
متن خطا: Incorrect syntax near the keyword 'PIVOT'.

SELECT year, month, Amount
FROM (SELECT SUBSTRING(x, 0, 5) AS year, SUBSTRING(x, 6, 2) AS month, DefultHore AS Amount
FROM tblsummon
WHERE (id <> 1) AND (id <> 2)) AS InvoiceResult
PIVOT
(
SUM(Amount)
FOR [month] IN ([01],[02])
)
AS pivot


http://uplod.ir/0idu6p07vxkd/1111111111.PNG.htmhttp://barnamenevis.org/<a href=&quot;http://uplod.ir/0idu6p07vxkd/1111111111.PNG.htm&quot; target=_blank><img src=&quot;http://s6.uplod.ir/i/00221/0idu6p07vxkd_t.jpg&quot; border=0></a>&quot;http://s6.uplod.ir:182/d/2k26a46j4hvhuf6th6p5l7t3xr5mxhoktzqu57ceztxk54hja4 yvhhup/1111111111.PNG
http://uplod.ir/0idu6p07vxkd/1111111111.PNG

khokhan
دوشنبه 14 مرداد 1392, 20:17 عصر
این کدها مال کدوم یکی هست ؟

mhsmity
دوشنبه 14 مرداد 1392, 20:20 عصر
این کدها مال کدوم یکی هست ؟
همین بالایی
SELECT SUBSTRING(x, 0, 5) AS year, SUBSTRING(x, 6, 2) AS month, DefultHore AS Amount FROM tblsummon
WHERE (id <> 1) AND (id <> 2)) AS InvoiceResult


عکس خروجی هست که گذاشتم حالا می خوام از PIVOT استفاده کنم و برحسب ماه نمایش بدم

khokhan
دوشنبه 14 مرداد 1392, 20:48 عصر
همین بالایی
SELECT SUBSTRING(x, 0, 5) AS year, SUBSTRING(x, 6, 2) AS month, DefultHore AS Amount FROM tblsummon
WHERE (id <> 1) AND (id <> 2)) AS InvoiceResult


عکس خروجی هست که گذاشتم حالا می خوام از PIVOT استفاده کنم و برحسب ماه نمایش بدم
میشه یه فایل دیتابیس کوچولو شبیه اونی که تویه پروژه ات استفاده کردی درست کنی و بگذاری اینجا البته یه چند تا رکورد هم داشته باشه ؟؟؟؟!!!!

mhsmity
دوشنبه 14 مرداد 1392, 21:23 عصر
میشه یه فایل دیتابیس کوچولو شبیه اونی که تویه پروژه ات استفاده کردی درست کنی و بگذاری اینجا البته یه چند تا رکورد هم داشته باشه ؟؟؟؟!!!!

یه مثال ساده هست می خوام نحوه کار کردش رو یاد بگیریم
ولی باز باشه؟
محیطی که این دستورات رو ران می کنم براتون کذاشتم.

WindowsFormsApplication3.zip (http://uplod.ir/ba83qc79j975/WindowsFormsApplication3.zip.htm)

khokhan
سه شنبه 15 مرداد 1392, 02:23 صبح
یه مثال ساده هست می خوام نحوه کار کردش رو یاد بگیریم
ولی باز باشه؟
محیطی که این دستورات رو ران می کنم براتون کذاشتم.

WindowsFormsApplication3.zip (http://uplod.ir/ba83qc79j975/WindowsFormsApplication3.zip.htm)
باسلام
این تصاویر محتوای فایل دیتابیس ارسالی شما می باشندکه اولی به صورت کوئری معمولی فراخوانی گردیده و دومی از طریق pivot
البته مختصر تغییراتی در بانکتون داده ام تا سریعتر به نتیجه برسانیم و در هرصورت هرگونه که بخواهید میشه از این طریق محتوای یک سطون رو به ستونهای دلخواه تفکیک نمود
نمونه رو هم ضمیمه می کنم باز هم اگه لازم بود تغییرات لازم رو می دهیم لینک (http://uplod.ir/e0s7w4hqo1cd/WindowsFormsApplication3.rar.htm)

mhsmity
جمعه 18 مرداد 1392, 03:57 صبح
باسلام
این تصاویر محتوای فایل دیتابیس ارسالی شما می باشندکه اولی به صورت کوئری معمولی فراخوانی گردیده و دومی از طریق pivot
البته مختصر تغییراتی در بانکتون داده ام تا سریعتر به نتیجه برسانیم و در هرصورت هرگونه که بخواهید میشه از این طریق محتوای یک سطون رو به ستونهای دلخواه تفکیک نمود
نمونه رو هم ضمیمه می کنم باز هم اگه لازم بود تغییرات لازم رو می دهیم لینک (http://uplod.ir/e0s7w4hqo1cd/WindowsFormsApplication3.rar.htm)

دست شما درد نکنه خیلی عالی بود
با توجه به تصویر تاپیک اول

3 ستون آخر رو چطور محاسبه کنم ؟
بعد از این که در کریستال ریپورت لود شد
منظورم با توجه به تاریخ عضویت چه طوری تعداد کل کلاس هاش رو تشخیص بدم؟

khokhan
جمعه 18 مرداد 1392, 09:34 صبح
دست شما درد نکنه خیلی عالی بود
با توجه به تصویر تاپیک اول

3 ستون آخر رو چطور محاسبه کنم ؟
بعد از این که در کریستال ریپورت لود شد
منظورم با توجه به تاریخ عضویت چه طوری تعداد کل کلاس هاش رو تشخیص بدم؟
همه اینکارا رو توی همون کوئری می تونی انجام بدی بریزی توی گرید بعد بفرستی به گزارش اگه نتونستی یه ندا بده یه نمونه براتون درست کنم

mhsmity
یک شنبه 27 مرداد 1392, 00:08 صبح
همه اینکارا رو توی همون کوئری می تونی انجام بدی بریزی توی گرید بعد بفرستی به گزارش اگه نتونستی یه ندا بده یه نمونه براتون درست کنم
با سلام خیلی با این گزارش ور رفتم ولی نتونستم 3 ستون آخر روی برای گزارش درست کنم طبق تصویر پست اول
البته سمت دستورات اسکویل منظورم هستش نه داخل کریستال ریپورت و اسکریپت نویسی
اگه براتون مقدور هستش همین مثالی که زحمت نوشتنش رو کشیدن برام آماده کنید که 3 ستون زیر به فرمول با شرایط زیر اضافه بشه


تعداد کل کلاس ها: براساس تاریخ عضویت محاسبه می شود. مثلا آقای احمدی از برج 4 عضو بوده و کلاس های فرودین ماه و خرداد ماه برای ایشان لحاظ نمی شود.
تعداد حضور : براساس تعداد کلاس های که حق شرکت کردن داشتن، چند حاضری وجود دارد.
درصد حضور: مثلا ردیف سوم آقای رضایی


(3/4)*100= 75%



اگر امکانش هست یک فایل Script از پایگاه داده خودتون برام بزارین چون ویزوال من 2008 و برای شما 2010 یا بالاتر هستش
ولی هنگام کامپایل پیغام خطالی ورزن فایل دیتابیس رو دارم
ممنون

ممنون

mhsmity
دوشنبه 12 اسفند 1392, 03:07 صبح
سلام.
اقای khokhan (http://barnamenevis.org/member.php?131732-khokhan) خبری ازتون نیست ؟

تو این مثال ماه ها تعدادشون مشخص 12 تا هستش
اگه تعداد ستون ها مشخصی نباشد و تغییر باشد باید چی کار کرد
آیا روش پویت جواب خواهد دادد ممنون