PDA

View Full Version : آموزش: کریستال ریپورت (مبتدی و اسان)



ehsan7007
پنج شنبه 02 شهریور 1391, 09:19 صبح
به نام خالق هستی بخش

سلام به همه .
میدونم که اموزش کریستال ریپورت زیاده و کلا بحث اسونیه ، اما چون من خودم هم قبلا خیلی دنبال یه همچین اموزشی گشتم ولی پیدا نکردم خواستم یه چیزی مثل اونی که خودم می خواستم برای سایر دوستان قرار بدم.

در هر صورت خواستم یه اموزش کامل بزارم ، به امید اینکه به درد یکی بخوره.

ehsan7007
پنج شنبه 02 شهریور 1391, 09:34 صبح
اگر از ویژال استدیوی 2010 استفاده می کنید ، باید کریستال ریپورت رو دانلود و نصب کنید.
این یکی از لینک های دانلود(ورژن 13) (http://www.sourcegozar.com/%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%DA%AF%D8%B2%D8%A7%D8%B1%D8%B4-%DA%AF%DB%8C%D8%B1%DB%8C-sap-crystal-reports-v13-for-visual-studio-2010/)

خب ، بعد از نصب در صورتی که برنامه ی شما دات نت فریم ورک 4 باشه ، گزینه ی crystal report veiwer به قسمت report شما اضافه می شه که باید اون رو به روی فرمتون درگ کنید.

اول باید یه سند کریستال ریپورت ایجاد کنید ، کار خیلی را حتیه اما در ادامه هم توضیح میدم.

اگر سند ریپورتتون رو درست کردید و حالا می خواهید اون رو به فرمتون متصل کنید :


1. این یوزینگ رو اضافه کنید :
using System.Data.SqlClient;
2. این کد رو اضافه کنید :

SqlConnection con = new SqlConnection(@"Data Source=کانکشن استرینگ شما");
SqlDataAdapter da = new SqlDataAdapter();
SqlCommand cm = new SqlCommand();
DataSet ds = new DataSet();
نام سند ریپورت rpt = new نام سند ریپورت();

3. در قسمت فرم لود برنامتون (form_load) هم این کد رو اضافه کنید :

da = new SqlDataAdapter("SELECT id,name,job, from Table1 order by id", con); // باید با توجه به تیبل شما عوض شود.
con.Open();
Database1DataSet dss = new Database1DataSet(); // نام فایل xsd
da.Fill(dss, "Table1"); // نام تیبل شما
rpt.SetDataSource(dss);
crv.ReportSource = rpt; // crv نام crystal report veiwer شما می باشد که باید انرا تغییر دهید.
con.Close();

با اجرا کردن برنامه شما می تونید محتویات جدولتون رو به همون صورتی که سندتون رو درست کردید مشاهده کنید.

با ارزوی موفقیت برای دوستان.

elderado
پنج شنبه 02 شهریور 1391, 14:30 عصر
با سلام و تشکر از این تاپیک
من دارم برنامه نویسی سه لایه کار میکنم
و کدهایی از قبیل کانکشن استرینگ و دیتا آداپتر و دیتا ست رو توی لایه ی دیتا بیس نوشتم
اینجا من منظور از سند رو نفهمیدم
و اینکه اگه بخوام توی یه فرم که صرفا برای پروژه من فرم اصلی هست اطلاعات دیتا بیس رو بصورت یه نمودار نمایش بدم باید چیکار کنم
ممنونم از اینکه راهنمایی میکنید

ehsan7007
پنج شنبه 02 شهریور 1391, 16:19 عصر
منظور من از سند همون فایل کریستال ریپورت ایجاد شدست.
برای نمایش دیتابیس به شکل نمودار هم باید توهمون فایل کریستال ریپورت طراحیش کنی و crystal report viewer ات رو در فرم اصلی قرار بدی و از همون کد های بالا برای ارتباط با فایل ریپورتت استفاده کنی. اگر هم مشکلی باطراحیش داشتی می تونی یه سری به تالار گزارش سازی با crystal report بزنی.


موفق باشی.

r_s1389@yahoo.com
پنج شنبه 27 مهر 1391, 22:14 عصر
سلام
من خیلی وقت است از کریستال ریپورت استفاده نمی کنم ولی تا اونجای که یادم هست اگه بخوای این طوری گزارش بگیری باید سند ریپورتت را در داخل چوشه bin کپی کنی آره؟؟؟؟؟؟؟؟

ehsan7007
پنج شنبه 27 مهر 1391, 22:26 عصر
نه دیگه ! اونطوری که واویلاست !
سند های ریپورت مانند بقیه فایل ها (برخی) در خود exe موجو هستند ؛ البته اگه اشتباه نکنم ، در هر صورت کنار برنامه نیستن.

r_s1389@yahoo.com
پنج شنبه 27 مهر 1391, 23:09 عصر
ن اصلا هم واویلا نیست اگه تو بیای یک ریپورت داکیومنت درست کنی و از اون اسفتاده کنی برای گزارش گیری باید کاری که من گفتم رو انجام بدی

ehsan7007
جمعه 28 مهر 1391, 08:16 صبح
ن اصلا هم واویلا نیست اگه تو بیای یک ریپورت داکیومنت درست کنی و از اون اسفتاده کنی برای گزارش گیری باید کاری که من گفتم رو انجام بدی

نه دوست عزیز ؛ اینطوری که میگید نیست ؛ مال خودم در پوشه ی اصلی پروژه ویژال استدیو هستند و نه در Bin ؛ این هم تصویری از یک برنامه پس از نصب که بیش از 10 تا سند ریپورت داره ! ولی شما نمیبینیدشون !

sirvan-me
جمعه 28 مهر 1391, 11:09 صبح
نه دوست عزیز ؛ اینطوری که میگید نیست ؛ مال خودم در پوشه ی اصلی پروژه ویژال استدیو هستند و نه در Bin ؛ این هم تصویری از یک برنامه پس از نصب که بیش از 10 تا سند ریپورت داره ! ولی شما نمیبینیدشون !

یعنی شما منظورت اینه که زمانی که پروژه تو Publish می کنی ... نیازی نیست فایل rpt رو کنار پروژه ت بزاری ؟

sirvan-me
جمعه 28 مهر 1391, 11:23 صبح
یه سوال دیگه ... شما فایل rpt گزارشتو به صورت دستی می سازی ( نه Wizard ) و بعد با استفاده از دیتاست اونو پر می کنی ؟!
من یه SP دارم که یه پارامتر به عنوان مقدار جستجو می گیره و بر حسب اون گزارشم رو پر میکنم ( جایی تو کدم query نمی فرستم ) و کدم هم اینطوری میشه ...

try
{
ParameterFields myParams = new ParameterFields();
ParameterField myParam = new ParameterField();
ParameterDiscreteValue myDiscreteValue = new ParameterDiscreteValue();
myParam.ParameterFieldName = "@SCode";


myDiscreteValue.Value = SCode_frm;
myParam.CurrentValues.Add(myDiscreteValue);
myParams.Add(myParam);
crystalReportViewer1.ParameterFieldInfo = myParams;
crystalReportViewer1.ReportSource = "MyRep.rpt";
}
catch (Exception ex)
{
FarsiMessageBox.Show(FarsiMessageBox.FarsiMessageB oxTheme.خاکستری,
String.Format("خطایی با مضمون زیر در برنامه رخ داده است :\n{0}", ex.Message),
"خطا",
FarsiMessageBox.FarsiMessageBoxButton.تایید,
FarsiMessageBox.FarsiMessageBoxIcon.اخطار1);
}

ehsan7007
جمعه 28 مهر 1391, 12:59 عصر
یعنی شما منظورت اینه که زمانی که پروژه تو Publish می کنی ... نیازی نیست فایل rpt رو کنار پروژه ت بزاری ؟

بله ؛ همینطوره ، مگه چیزه عجیبیه ؟! تصویر برنامه نصب شده رو هم که گذاشتم ! دروغ که نمی گم دیگه ! تو هر برنامه ای که دادم دست مشتری همین کار رو کردم.


یه سوال دیگه ... شما فایل rpt گزارشتو به صورت دستی می سازی ( نه Wizard ) و بعد با استفاده از دیتاست اونو پر می کنی ؟!

از New Item کریستال ریپورت رو از نوع Blank میسازم و اونجا ویرایشش میکنم و فیلد های مورد نیاز دیتابیسم رو بهش میدم.
اگرم منظورتون تو کده ؛ واضحه دیگه !

sirvan-me
جمعه 28 مهر 1391, 14:11 عصر
یه سوال ...
میشه با استفاده از کریستال گزارشی بسازیم که Design ش مثل شکل و شمایل یه کارنامه درسی باشه ؟! یا حتما باید به صورت جدول ستونی باشه ؟!

یه سواله دیگه ...
چطور با استفاده از کریستال گزارش دینامیک بنویسم ... یعنی خود کاربر بتونه Group بندی رو انجام بده و یا خیلی امکانات دیگه ...

شما تو پروژه هاتون چطور گزارشی ارائه می دی ؟
مرسی بابت راهنمائیت ...

ehsan7007
جمعه 28 مهر 1391, 14:52 عصر
میشه با استفاده از کریستال گزارشی بسازیم که Design ش مثل شکل و شمایل یه کارنامه درسی باشه ؟! یا حتما باید به صورت جدول ستونی باشه ؟!

چرا نشه ! فکر میکنم باید از (section2 (Page Heaser استفاده کنید .


چطور با استفاده از کریستال گزارش دینامیک بنویسم ... یعنی خود کاربر بتونه Group بندی رو انجام بده و یا خیلی امکانات دیگه ...

یعنی در زمان اجرا بتونید قسمت های مختلف رو طراحی (مثلا جابجا) کنید ؟ گروه بندی یا اون خیلی های دیگه ؟!


شما تو پروژه هاتون چطور گزارشی ارائه می دی ؟


منظورتون رو نمی فهمم ؛ یعنی چطوری طراحی میکنم و یا چطوری و چی نشون میدم؟

sirvan-me
جمعه 28 مهر 1391, 16:17 عصر
جواب سوال دومم رو نگرفتم هااااااااااااااااااااا


چطور با استفاده از کریستال گزارش دینامیک بنویسم ... یعنی خود کاربر بتونه Group بندی رو انجام بده و یا خیلی امکانات دیگه ...

ehsan7007
جمعه 28 مهر 1391, 17:59 عصر
ببینید این لینک ها کمکتون میکنه ؟
Dynamic Crystal Report with C# (http://www.codeproject.com/Articles/20670/Dynamic-Crystal-Report-with-C)

لینک دو (http://social.msdn.microsoft.com/Forums/eu/vscrystalreports/thread/8a46c948-168a-4595-942f-5087329b0ea0)