View Full Version : گزارشگیری آماری( فو ری)
maryam_jamshid
یک شنبه 07 خرداد 1385, 07:13 صبح
سلام
من در برنامه ام از یه گزارشگیری آماری استفاده کرده ام مثلا باید آمار کتابها با سالهای مربوط به آن نمایش دهد.
مثلا در سال تعدادکتاب
1370 10
1371 5
وهمین به ترتیب...
ولی من نمیدونم که چطوری در کریستال ریپورت استفاده نماییم که مجموع کتابها را در سالهای مشخص نمایش دهد.
Seivan
دوشنبه 08 خرداد 1385, 13:48 عصر
راههای مختلفی برای انجام این کار وجود دارد مثلا می توانید از Running Total Field ها استفاده کنید. و یا فرمولی برای این کار بنویسید. فرض کنید اسم فیلد سال Year و اسم فیلد کتاب Book هستش. فرمول زیر را ایجاد نمایید و دستورات زیر را در آن تایپ کنید. این فرمول تعداد کتابها را در هر سال می شمارد.
// save this formula As YearBookCount
Sum ( {Book} , {Year} )
این فرمول را در گزارش Drog & Drop کنید تعداد کتابهای هر سال را نشان می دهد.
اگر از چارت برای نمایش استفاده می کنید می توانید تنظیمات چارت را در قسمت Chart Express به طرق زیر انتخاب کنید که for each Book مقدار Sum(book) را نمایش بده.
حتی می توانید در View گزارش مقدار Sum(book) AS SumBookCount را محاسبه
نمایید و آنرا در گزارش قرار دهید.
maryam_jamshid
سه شنبه 09 خرداد 1385, 17:35 عصر
به خاطر جوا بتون ممنونم، مشکل حل شد.
ولی یه سو ال دارم و اینکه من در گزارشگیری از یه sqldataadapterو dataset استفاده میکنم و
کریستال ریپو رت رو به dataset که سا ختم وصل میکنم،ولی چون از کریستال ریپورت های زیادی استفاده میکنم ، در نتیجه از چند sqldataadapter و چند dataset استفاده باید بکنم .آیا راهی برای اینکه از یه sqldataadapter و یه dataset استفاده کنم هست؟؟؟
Seivan
چهارشنبه 10 خرداد 1385, 12:01 عصر
تا آنجا که من متوجه شدم شما طراحی گزارش را در Crystal Report مربوط به .NET طراحی می کنید. اما این روش روش خوبی نیست به دلایل زیر:
1. تولید Dataset برای هر گزارش توسط .NET که داخل هر DataSet باز ConnectionString تعریف می گردد. و اگه محل dataBase تغییر کرد مشکل Portability دارد.
2. شما با این کار به خود Object گزارش اجازه می دهید که خودش داده هایش را بخواند. (مشکلات Control Access و یا عدم امکان محاسبات روی Dataset گزارش در .Net)
بهترین روش این است شما گزارشها را با نرم افزار Crystal Report طراحی نمایید. در این حالت گزارش مستقیما از اشیا موجود در DataBase داده ها را می خواند. و در Application و در RunTime برای هر گزراش DataSet آنرا بر حسب فیلترهای کاربر تولید کرد که همه DataSet ها نیز در DataAccessLayer تحت یک Connection یا یک DataAdapter به DataBase وصل می شوند و سپس Dataset را برای Object ایجاد شده از گزارشتان Set کنید.
maryam_jamshid
چهارشنبه 10 خرداد 1385, 14:52 عصر
از راهنماییتون ممنونم.
من چند سوال راجع این مساله دارم.
1-من وقتی که از نرم افزار مختص به گزارشگیری استفاده میکنم ،چطوری در برنامه ام که با windows application است بتوانم به نرم افزار crystal report وصل شوم و از طریق آن بتوانم گزارشگیری کنم.و فرم های گزارش را درست نمایم
و اینکهrun time چکاری انجام میدهد؟
maryam_jamshid
پنج شنبه 11 خرداد 1385, 17:08 عصر
من کریستال ریپورت 20005 را نصب کرده ام ولی نمیدونم چطوری آن رو ریجیستر کنم؟
ونمیدونم چطوری از برنامه ام که با winapp به اون وصل بشم؟
میشه این چیز هایی رو که گفتید بیشتر توضیح دهید.
((در Application و در RunTime برای هر گزراش DataSet آنرا بر حسب فیلترهای کاربر تولید کرد که همه DataSet ها نیز در DataAccessLayer تحت یک Connection یا یک DataAdapter به DataBase وصل می شوند و سپس Dataset را برای Object ایجاد شده از گزارشتان Set کنید.))
با تشکر
Seivan
یک شنبه 14 خرداد 1385, 17:15 عصر
اگه اجازه بدید در فرصتی مثالی برای این کار و با استفاده از کد سی شارپ روی سایت آپلود می کنم
Seivan
یک شنبه 14 خرداد 1385, 21:42 عصر
روش که به این صورت است که :
1. برای گزارشتان یک View در پایگاه داده بسازید.
2. در برنامه Crystal Report گزارشتان را بسازید. این گزارش داده ها را از View ایجاد شده می خواند.
3. فایل Crystal Report ایجاد شده را به پروژه اضافه نمایید. NET. کلاسی برای این گزارش Genetare می کند که باعث می شود در پروژه گزارش را به عنوان یک کلاس ببینید و Object هایی از گزارش را بسازید.
4. بر حسب فیلترهایی که کاربر برای نمایش گزارش می خواهد اعمال کند Stored Procceder ی بسازید که در Sp فیلتر های کاربر را بر روی View اعمال می کند.
5. در پروژه Object ی از گزارش ایجاد شده بسازید. بر حسب فیلترهایی که کاربر انتخاب می کنید داده را از SP ایجاد شده بخوانید و برای گزارش Set کنید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.