Crystal Reporting
با استفاده از C#.NET
2003 Windows Application
مرحله 1: جهت باز کردن سند crystal report، روی پروژه راست کلیک کنید.
Add و سپس Add New item را انتخاب کنید. پنجره جدیدی مانند زیر ظاهر می شود. به گزارشتان اسم بدهید.

مرحله 2:
بعد از کلیک روی Open، پنجره دیگری خواهید دید که به شما امکان می دهد چگونگی ایجاد گزارش را با استفاده از Report Expert یا از Blank Reportیا از یک گزارش موجود انتخاب کنید. در اینجا، من گزینه دوم یعنی یک Blank Report را انتخاب می کنم.
حالا سند Crystal Report شما باز خواهد شد. در سمت چپ، شما Field Explorer را می بینید که توسط آن می توانید با database در ارتباط باشید.
(اگر Field Explorer موجود نباشد، می توانید از Ctrl + Alt + T استفاده کنید)
مرحله 3:
حالا برای انتخاب database، روی Database Fieldsدر Field Explorer راست کلیک کنید.
Add/Remove Database -> OLEDB(ADO) ->Make New Connection -> Microsoft OLE DB Provider for SQL Server را انتخاب کنید. روی Next کلیک کنید و اطلاعات connectionتان را بدهید، روی Next کلیک کنید و سپس روی Finish کلیک کنید.
حالا می توانید جدولها، viewهایی را که برای Report احتیاج دارید، اضافه کنید. پنجره، شبیه این خواهد بود.

مرحله 4:
حالا در Field Explorerتان می توانید Table/View انتخابی تان را ببینید. Fieldهایی را که می خواهید در گزارش در قسمت جزییات (Details Section) نشان دهید، drag کنید. صفحه زیر ظاهر خواهد شد.

Fieldهای Details section، اشیاء Field هستند، و Fieldهای Page Header و Report Header، اشیاء متن هستند.
مرحله 5:
حالا، جهت نشان دادن این گزارش، یک فرم بردارید و یک CrystalReportViewer به آن اضافه کنید. (فقط CrystalReportViewer را از Tool Box روی فرم drag کنید)
using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports.Engine;
حالا حتی اگر databaseهای متصل به گزارش هم داشته باشیم، اما اگر database را تغییر داده باشیم، آنگاه ایجاد مجدد یک Crystal reports ممکن نخواهد بود، پس می توانیم از TableLogOnInfo جهت متصل کردن گزارش به database استفاده کرد.
ایجاد شیء
private TableLogOnInfo LogInfo = new TableLogOnInfo();
می توان این تابع را به صورت زیر نوشت
privatevoid SetLogonInfo()
{
try
{
.ConnectionInfo.ServerName=�SerVerName�;
.ConnectionInfo.UserID=�sa�;
.ConnectionInfo.Password=�ok�
.ConnectionInfo.DatabaseName=�CrystalSample�;
}
atch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
حالا باید شی گزارش را ایجاد کنیم. راههای متنوعی جهت نمایش دادن گزارش وجود دارد.
یک شی از Report Document ایجاد کنید که بتوان در هر گزارشی که قرار است روی آن CrystalreportViewer نشان داده شود، قابل استفاده باشد:
ReportDocumentO_Report=new ReportDocument();
rt.Load(@"E:\CrytstalSample\rptShowList.rpt");
اشیاء متفاوتی برای گزارشهای متفاوت به شرح زیر ایجاد کنید:
rptShowList O_showList =new rptShowList();
ort1.Database.Tables[0].ApplyLogOnInfo(LogInfo);
مرحله 6:
حالا می خواهم AddressList کاربرانی را که عددشان بزرگتر از 15 است نشان دهم. بدین منظور، من DataTable را با این رکوردها پر می کنم و سپس آن را به گزارش الصاق (attach) می کنم.
DataTable DT =new DataTable();
try
{
string CmdStr="";
CmdStr = �Select * fromVw_AddressList whereUser_Number>15�;
Connection.Open();
SqlDataAdapterAdpt=newSqlDataAdapter(CmdStr,Connection);
DT.Clear();
Adpt.Fill(DT);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
Connection.Close();
}
مرحله 7:
حالا DataTable پرشده بالا را به عنوان ReportsdataSource تنظیم کنید.
O_showlist.Database.Tables[0].SetDataSource(DT);
مرحله 8:
گزارش را به عنوان crystal report viewer report sourceتنظیم کنید تل گزارش را به viewer، bind کنید..
CryStalReportViewer1.ReportSource = O_Report1111;
CryStalReportViewer1.Zoom(1);
همان کار را می توان با شی متنی هم کرد.
همچنین می توان properties of Formula Field را به روشهای دیگر هم تغییر داد.
O_showlist.DataDefinition.FormulaFields["Header"].Text = �AddressList�;
Fieldهای :Formula
در اینجا من فقط نمونه ای از چگونگی استفاده از formula field را توضیح خواهم داد. شرح کامل formula fieldاز حوصله این بحث خارج است.
روی Formula Field و سپس New راست کلیک کنید و آن را نامگذلری کنید.
صفحه ویرایش Formula مانند زیر ظاهر خواهد شد:
بخش سمت چپ شامل fieldهای databaseیی می شود که می توانیم روی آن fieldیی را که می خواهیم formula را در آن بنویسیم، انتخاب کنیم. بخش میانی تابع ها هستند. می توانیم انواع تابع ها را به Formula اعمال کنیم. سمت راست مخصوص عمل کننده ها (operator) است، یعنی جاییکه می توانیم از عمل کننده ها در formula استفاده کنیم.
می توان کد را به صورت زیر نوشت:
if({Vw_AddressList.Gender})= 'M' then
'Male'
else
'Female'
نصب برنامه CrystalReport. Net
مرحله اول: روی Solution وسپس روی Add New Project راست کلیک کنید.
![clip_image001[6] clip_image001[6]](http://articles.tahlildadeh.com/image.axd?picture=clip_image001%5B6%5D_thumb.jpg)
SetUp and Deployment Projects و سپس Setup Project را انتخاب کنید. به setupتان را نامگذاری کنید.
مرحله 2: اضافه کردن فایل Exe و فایلهای دیگر
در File System، روی Application Folder کلیک راست کنید (معمولاً این کار پوشه ای را در Win/Sys ایجاد می کند) سپس Add > Project Output > و سپس Primary output و فایلهای لازم دیگر را انتخاب کنید.
تا اینج فراید معمول نصب کردن بود. اگر برنامه شما Crystal Reports را هم در بر بگیرد، باید چند کار دیگر هم بکنید.
اضافه کردن Merge Module:
روی Setup project > Add > Merge Module > کلیک راست کنید.
ابندا Crystal_regwiz2003.msm و سپس Crystal_Managed2003.msm و Crystal_Database_Access2003_enu.msm و Crystal_Managed2003.msm را انتخاب کنید.
روی Open کلیک کنید.
حالا چبز مهم این است که وقتی این Set up را روی یک سیستم دیگر اجرا می کنید، با این error مواجه می شوید: Keycode32.Dll
دلیل این error، ندادن Registration key به فایل Merge Module است.
Crystal_regwiz2003.msm، جهت انجام این کار روی Crystal_regwiz2003.msm کلیک راست کنید و Properties را انتخاب کنید.
در Properties، (Merge Module Properties)را انتخاب کنید و key را در License Key وارد کنید.
حالا License key می تواند Crystal Report product key باشد، یا می توانید آنرا از منوی Help > About Microsoft Development Environment بدست آورید.
در آنجا رشته (string) Crystal Reports for Visual Studio .NETAAP50-GS00000-U7000RN را خواهید دید (ممکن است برای نسخه های دیگر متفاوت باشد). Key شما is'AAP50-GS00000-U7000RN' است.
حالا solution را بسازید، و set up شما آماده است.