PDA

View Full Version : آموزش: آموزش مبتدی استفاده از کریستال ریپورت در Visual Stadio 2010



ozzy_mra
سه شنبه 13 دی 1390, 10:13 صبح
سلام
مدتی دنبال آموزش استفاده از کریستال ریپورت در سی شارپ 2010 بودم که این صفحه (http://www.codeproject.com/KB/aspnet/Crstalreportusingvs2010.aspx) رو پیدا کردم آموزش خوبی برای مبتدی هاست مثال ها رو از همونجا می تونید دانلود کنید در ضمن اگه خود مقاله رو بخونید چیزهای بیشتری رو آموزش داده
تمام کد ها و عکس ها از سایت CodeProject آورده شده است

ozzy_mra
سه شنبه 13 دی 1390, 10:21 صبح
ایجاد یک گزارش با استفاده از Crystal Report در Visual Stadio 2010
از مدتهای طولانی، ویژوال بیسیک و ویژوال استدیو کریستال ریپورت رو به عنوان بخشی از خود داشتند اما در ویژوال استدیو 2010، کریستال ریپورت از این مجموعه جدا شد. اما به صورت فایل نصبی جدا از وب سایت sap قابل دانلوده.
برای دریافت این فایلها در ایران (به علت تحریم امکان دانلود از سایت sap وجود ندارد) به این لینک (http://www.softgozar.com/WebPage/Download.aspx?SoftwareId=849&Title=SAP-Crystal-Reports-13.0-Final-for-Visual-Studio-2010)مراجعه کنید و هر شش فایل را دانلود کنید پارت 1 و 2 را extract و نصب کنید.
در این آموزش ایجاد یک گزارش ساده را با هم می بینیم و به بررسی برخی از امکانات کریستال ریپورت می پردازیم
ابتدا یک پروژه (وب یا ویندوز) ایجاد می کنیم
80072
تصویر زیر نمایی از جدول که اطلاعات در اون قرار می گیرد را نشان می دهد
80073
و تصویر زیر هم همان جدول را با داده های درون آن نشان می دهد
80074
فایل اسکریپت و نممونه کامل برنامه را از سایت codproject می تونید دانلود کنید
برای اینکه بتونید همانند مثالهایی که در آینده می بینید تمرین کنید بهتره که فایل دیتا بیس اون رو دانلود کنید و بر روی sqlserver اجراش کنید

ozzy_mra
سه شنبه 13 دی 1390, 10:26 صبح
ساخت یک گزارش ساده با کریستال ریپورت :
1- برای شروع کار می بایست ابتدا یک فایل XSD یا DataSet برای پروژمون ایجاد کنیم برای همین از منوی ProjectAdd new Item Dataset یک دیتا ست به پروشمون اضافه می کنیم :
80075
2- گام بعدی ایجاد یک دیتا تیبله، برای این کار در محیط دیتا ست ایجاد شده کلیک راست می کنیم و از گزینه add، DataTable رو انتخاب می کنیم
80076
3- مرحله بعد ایجاد Column برای data Table هست باید توجه کنیم که نام ستون هایی که می سازیم با نام فیلد هایی که قراره به گزارشمون پاس داده بشه یکی باشه برای این کار بر روی دیتاتیبل کلیک راست می کنیم و از گزینه Add ، Column را انتخاب می کنیم
80077
4- بعد از ایجاد تمام ستون ها باید نوع Data Type اونها رو با نوع دیتاتایپ فیلد هایی که به گزارش پاس می دیم یکی کنیم به طور مثال اگر فیلدی که به دیتاست جهت نمایش در کریستال ریپورت ارسال میشه از نوع NVarChar باشه باید Data Type اون column رو هم برابر system.string قرار بدیم. اگر دیتاتایپ در زمان اجرا تطابق نداشته باشه پیغام خطا صادر میشه. برای اینکار بر روی هر column کلیک راست می کنیم و گزینه ProPerties رو انتخاب می کنیم و در پنجره نمایش داده شده مقدار Data Type اون فیلد رو تنظیم می کنیم
80078
در اینجا کار ما با دیتا ست تموم شد فایل را save می کنیم و دیتا ست را می بندیم. مرحله بعدی ایجاد گزارش در کریستال ریپورته

ozzy_mra
سه شنبه 13 دی 1390, 10:30 صبح
5- از منوی Project<add new Item یک Crystal Reports به پروژه add می کنیم
گزینه using the Report wizard را انتخاب می کنیم و بر روی دکمه ok کلیک می کنیم
80080
6- در پنجره بعدی از بخش Available Data Sources از قسمت Project Data بر روی ADO.NET Datasets کلیک می کنیم و از آنجا دیتا ست خودمون رو که قبلاً ایجاد کرده بودیم رو انتخاب می کنیم و با کلیک بر روی دکمه > اون رو به سمت راست منتقل می کنیم و بر روی دکمه Finish کلیک می کنیم
80081
7- ریپورت به صورت شکل زیر بوجود میاد می تونید فیلد های دیگه ای هم که مورد نیازتون هست رو به گزارشتون اضافه کنید
80082
مرحله بعد پر کردن دیتا ست و نمایش اون در فرمه

ozzy_mra
سه شنبه 13 دی 1390, 10:32 صبح
8- یه فرم جدید ایجاد کنید و بر روی اون یک شی CrystalReportViewr بندازید
9- بهتره که ریپورت های ساخته شدتون رو به فولدر debug انتقال بدید من در ادامه فرض می کنم که فایل گزارشم در این فولدر قرار داره برای انتقال فایل گزارش به فوکدر debug در solution Explorer بر روی آیکن show all Files کلیک کنید تا فولدر bin به نمایش در بیاد و بعد فایل گزارشتون رو به فولدر debug که زیر شاخه فولدر bin هست با drag and drop منتقل کنید
10- به متد Load فرم برید قبل از اون باید using های زیر رو انجام بدید :
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;

11- کد های زیر رو در متد Load فرم بنویسید :
protected void Page_Load(object sender, EventArgs e)
{
ReportDocument rptDoc = new ReportDocument();
dsSample ds = new dsSample(); // .xsd file name
DataTable dt = new DataTable();
// Just set the name of data table
dt.TableName = "Crystal Report Example";
dt = getAllOrders(); //This function is located below this function
ds.Tables[0].Merge(dt);
// Your .rpt file path will be below
rptDoc.Load(Application.StartPath + "/SimpleReports.rpt");
//set dataset to the report viewer.
rptDoc.SetDataSource(ds);
CrystalReportViewer1.ReportSource = rptDoc;
}

12- متد getAllOrders() یک متد برای استخراج فیلد های مورد نظرمون از دیتابیس و ارسال اون در قالب یه دیتا تیبله در زیر این متد آورده شده :
public DataTable getAllOrders()
{
//Connection string replace 'databaseservername' with your db server name
string sqlCon = "User ID=sa;PWD=sa; server=databaseservername;
INITIAL CATALOG=SampleDB;PERSISTSECURITY INFO=FALSE;Connect Timeout=0";
SqlConnection Con = new SqlConnection(sqlCon);
SqlCommand cmd = new SqlCommand();
DataSet ds = null;
SqlDataAdapter adapter;
try
{
Con.Open();
//Stored procedure calling. It is already in sample db.
cmd.CommandText = "getAllOrders";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = Con;
ds = new DataSet();
adapter = new SqlDataAdapter(cmd);
adapter.Fill(ds, "Users");
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
cmd.Dispose();
if (Con.State != ConnectionState.Closed)
Con.Close();
}
return ds.Tables[0];
}hrow new Exception(ex.Message);
}
finally
{
cmd.Dispose();
if (Con.State != ConnectionState.Closed)
Con.Close();
}
return ds.Tables[0];
}

13- کارمون تموم شد فقط برنامه رو اجرا می کنیم خروجی همانند شکل زیر میشه :
80083

ozzy_mra
سه شنبه 13 دی 1390, 10:34 صبح
نکته : کد های زیر رو حتماً در فایل app.config (یا web.config) اضافه کنید
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
<requiredRuntime version="v4.0.20506"/>
</startup>
موفق باشید

Hybrid
سه شنبه 13 دی 1390, 10:35 صبح
سلام ،

دوست عزیز ممنون از زحمتی که کشیدید واقعا دستتون درد نکنه ، ولی یه پیشنهاد داشتم اگه میشه نسخه پی دی اف این آموزش ها رو آماده کنین تا دوستان بتونن بهتر از مطالبتون استفاده کنن..

با تشکر./

ozzy_mra
سه شنبه 13 دی 1390, 11:32 صبح
اینم آموزش بالا در قالب فایل PDF
دانــــــــلـــــــود (http://www.4shared.com/rar/kRecxoaw/crystalreport_2010.html)

ozzy_mra
چهارشنبه 14 دی 1390, 07:46 صبح
نحوه ارسال پارامتر به کریستال ریپورت
برای این کار در محیط طراحی کریستال و در قسمت Field Explorer بر روی parameter Fields کلیک راست می کنیم و گزینه new را انتخاب می کنیم :
80147
در پنجره نمایان شده نام و نوع پارامتر خدمون رو مشخص می کنیم و ok می کنیم
80148
و نهایتاً به شکل زیر پارامترها رو به کریستال جهت نمایش پاس می دیم. من در این تکه کد دو پارامتر به نام های azDate و taDate از نوع string تعریف کردم :
rptDoc.SetDataSource(ds);
rptDoc.SetParameterValue("azDate",azDate);
rptDoc.SetParameterValue("taDate", taDate);

hosein_ras
جمعه 16 دی 1390, 23:24 عصر
8- یه فرم جدید ایجاد کنید و بر روی اون یک شی CrystalReportViewr بندازید

ممنون بابت آموزشتون
اما من یه مشکل دارم
اینکه هنگامی که پس از مراحل بالا فرم ایجاد می کنم و می خوام شی CrystalReportViewr رو بزارم روش همچین شی ای را در toolbox پیدا نمی کنم
آیا باید پس از نصب کریستال ،همچین شی ای را به ویژوال استودیو اضافه کرد
واگر باید اضافه کرد چگونه؟
با تشکر

ozzy_mra
شنبه 17 دی 1390, 07:12 صبح
سلام
احتمالاً شما از نسخه 3.5 دات نت فریم ورک استفاده می کنی از منوی project گزینه properties رو انتخاب کن و Target Framework رو به 4.0 تنظیم کن و بعد کریستال ریپورت رو نصب کن

hosein_ras
یک شنبه 18 دی 1390, 12:37 عصر
سلام
احتمالاً شما از نسخه 3.5 دات نت فریم ورک استفاده می کنی از منوی project گزینه properties رو انتخاب کن و Target Framework رو به 4.0 تنظیم کن و بعد کریستال ریپورت رو نصب کن

ممنون مشکل همین بود

amir_hanis
یک شنبه 11 تیر 1391, 14:16 عصر
سلام دوست گرامی.
برای حل مشکلتون می تونید به آدرس زیر مراجعه کنید.

http://fanavaranemandegar.blogfa.com

موفق باشید.

davidnamer
دوشنبه 12 تیر 1391, 18:03 عصر
سلام
1. پس از اجرای برنامه ،وقتیکه صفحه ریپورت نمایش داده می شود ،در گوشه سمت راست بالا عبارت sap crystal report وجود دارد برای اینکه این عبارت نمایش داده نشود چه باید کرد ؟
البته می توان toolbar را غیر فعال کرد ولی در اینصورت گزینه های مفید toolbar را از دست می دهیم
با سپاس

silvery
دوشنبه 26 تیر 1391, 18:48 عصر
sسلام من از این روش استفاده کردم اما از این تیکه از کد اشکال میگیره:

}hrow new Exception(ex.Message);
}
خطاشم اینه:The ConnectionString property has not been initialized.
وقتیم اونو غیر فعال میکنم از این خط خطا میگیره:
return ds.Tables[0];
خطاشم اینه:Object reference not set to an instance of an object.
لطفا اگه میتونید کمکم کنید خیلی بهش احتیاج دارم.

ozzy_mra
سه شنبه 27 تیر 1391, 07:12 صبح
sسلام من از این روش استفاده کردم اما از این تیکه از کد اشکال میگیره:

}hrow new Exception(ex.Message);
}
خطاشم اینه:The ConnectionString property has not been initialized.
وقتیم اونو غیر فعال میکنم از این خط خطا میگیره:
return ds.Tables[0];
خطاشم اینه:Object reference not set to an instance of an object.
لطفا اگه میتونید کمکم کنید خیلی بهش احتیاج دارم.
سلام
خب خطاش معلومه دیگه. connectionString رو چطور تعریف کردید؟ مشکل از اونجاست

firoozi90
دوشنبه 23 مرداد 1391, 12:55 عصر
سلام به همه
خواهشا اگر کسی می تونه به این تایپیک ساده زیر پاسخ بده
گزارش گیری از کنترل های روی فرم با کریستال ریپورت (http://barnamenevis.org/showthread.php?356269-%DA%AF%D8%B2%D8%A7%D8%B1%D8%B4-%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A7%D8%B2-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-%D9%87%D8%A7%DB%8C-%D8%B1%D9%88%DB%8C-%D9%81%D8%B1%D9%85-%D8%A8%D8%A7-%DA%A9%D8%B1%DB%8C%D8%B3%D8%AA%D8%A7%D9%84-%D8%B1%DB%8C%D9%BE%D9%88%D8%B1%D8%AA)

azarang
دوشنبه 30 مرداد 1391, 11:06 صبح
سلام . اگر از ویژوال استودیو 2010 استفاده میکنی ، برای اینکه بتونی CrystalReportViewr رو ، تو منوی Reporting ببینی ، باید از منوی Project فایل ریپورتی رو که ساختی انتخاب کنی . تو پنجره ای که باز میشه ، گزینه ای هست به نام Target framework ، لیست مربوط به این آیتم رو باز کن و مقدار NET Framework4. رو انتخاب کن ، درست میشه .
امیدوارم مشکلت حل بشه . موفق باشی

mganbari1354
یک شنبه 19 اسفند 1397, 17:33 عصر
سلام دوستان عزیز کریستال ریپورت درکامپیوتر مقصد نصب نمی شود چرا؟