بکارگیری متد PUSH از Crystal Report در ASP.NET

ارسال شده توسط administrator
24. مي 2010 11:03

مقدمه

این مقاله چگونکی استفاده از متد PUSH را جهت ترسیم گزارشها توضیح می دهد. همچنین چگونگی استفاده از DataSetهای کاربر را در صفحات گزارش ASP.NET توضیح می دهد. دو نوع متد برای ترسیم گزارش ها وجود دارد:

متد PULL - crystal report به database وصل می شود، و fields data را می آورد و گزارش را ترسیم می کند.

متد PUSH – یک DataSet ایجاد می کنیم، fieldهای DataSet را به عنوان fieldهای گزارش انتخاب می کنیم و سپس آن را به crystal report push می کنیم. در اینجا من قصد دارم فقط متد PUSH را توضیح دهم.

مراحل 1

یک پروژه جدید ASP.NET ایجاد کنید.

clip_image001

آیتم جدیدی به عنوان DataSetوارد کنید.

clip_image002

عناصری را به DataSetیی که می خواهید در گزارش باشد، اضافه کنید. Save All، سپس روی نام فایل DataSet راست کلیک کنید و فرمان "Build and browse". را انتخاب کنید.

سپس یک آیتم جدید به عنوان Crystal report به پروژه اضافه کنید و یک گزارش خالی insert کنید

در مرورگر سرور، روی database field کلیک کنید و database expert را انتخاب و project data را expand و DataSet را در table selector انتخاب کنید . OK کنید.

clip_image003

سپس fieldها را از fieldها database در server explorer در بخش جزییات گزارش drag کنید. Fieldها را هر طور که دوست دارید، مرتب کنید. کنترل crystal report viewer را از جعبه ابزار روی صفحه add کنید. این کار، متغیر زیر را add خواهد کرد:

protected CrystalDecisions.Web.CrystalReportViewer CrystalReportViewer1;

DataSet را populate کنید. گزارش DataSource و منبع گزارش CrystalReportViewer را set کنید.

 

 

private void Page_Load(object sender, System.EventArgs e)
{
CrystalReport1 report=new CrystalReport1();
CrystalReportViewer1.Visible=true;
DataSet ds=new DataSet("Account");//give same name as on
//dataset1 table header
DataTable table=new DataTable("Account");//give same name as on
//dataset1 table header
table.Columns.Add("Fname",typeof(System.String));
table.Columns.Add("Lname",typeof(System.String));
table.Columns.Add("Salary",typeof(System.String));
DataRow row=table.NewRow();
row["Fname"]="Mathew";
row["Lname"]="Hayden";
row["Salary"]="5000$";
// add to table
table.Rows.Add(row);
ds.Tables.Add(table);
// set report's dataset
report.SetDataSource(ds);
// set report source
CrystalReportViewer1.ReportSource =report;
}

 

خروجی (output) به شرح زیر خواهد بود:

clip_image001[6]

چند نکته که باید مد نظر قرار داد:

همان اسمهای Dataset و نام عنصر جدول Datasetیی که insert شده را بدهید.

وقتی Dataset را اصلاح (modify) می کنید، دوباره آن را بسازید و connectionهای کنونی در گزارش را log off کنید. موقعیت DataSource را درباره set کنید طوری که به DataSet اشاره کند، در غیر این صورت، fieldهای database گزارش، تغییرات را قبول نخواهد کرد.

می توان از از تنظیم proprtyهای DataBind در report viewer پرهیز کرد. می توان آن را در زمان run شدن انجام داد.

چگونگی بارگذاری و نمایش Crystal Reports در VB.NET

ارسال شده توسط administrator
24. مي 2010 10:37

مقدمه

کد زیر چگونگی بارگذاری Crystal Reports در VB.NET، که همه مسایل logon را حل می کند، را نشان می دهد؛ که شامل زیرگزارشها و ارسال پارامتر می شود. شما می توانید گزارش هایتان را تنها با فراخوانی تابع های لازم با پارامترهایش مشاهده کنید.

استفاده از این کد

استفاده از این کد در برنامه تان بسیار ساده است. در مرحله اول، باید یک فرم اضافه کنید وآن را frmViewReport بنامید، سپس کنترل Crystal Report Viewer را روی فرم قرار دهید و آن را rptViewer بنامید. در این قسمت کد، فقط تابع زیر را paste کنید. شما می توانید این تابع را از هر کجای برنامه تان با رجوع به فرم frmViewerReport فرابخوانید. کد نمونه جهت فراخوانی این تابع در زیر آورده شده است:

Dim objForm As New frmViewReport
objForm.ViewReport("C:\test.rtp", , "@parameter1=test�mter2=10")
objForm.show()

حالا بگذارید مفصلاً به شما توضیح دهم در کد چه اتفاقی می افتد و فرمت رشته پارامتر (parameter string) چیست. اگر پارامترهایی در Crystal Reports باشند، آنگاه باید آنها را با valueشان به param تابع فرستاد. parameter string باید به صورت زیر باشد:

<First Parameter Name>=<First Paramter Value>&
<Second Parameter Name>=<Second Paramter Value>..

به خاطر داشته باشید که نام پارامتر و value pairهایش با یک '&' جدا می شوند. نام گزارش با مسیر کاملش باید به تابع sReportName ارسال شود.

در زیر کد تابع با commentها آورده شده:

Friend Function ViewReport(ByVal sReportName As String, _
Optional ByVal sSelectionFormula As String = "", _
Optional ByVal param As String = "") As Boolean

'Declaring variablesables
Dim intCounter As Integer
Dim intCounter1 As Integer

'Crystal Report's report document object
Dim objReport As New _
CrystalDecisions.CrystalReports.Engine.ReportDocument

'object of table Log on info of Crystal report
Dim ConInfo As New CrystalDecisions.Shared.TableLogOnInfo

'Parameter value object of crystal report
' parameters used for adding the value to parameter.
Dim paraValue As New CrystalDecisions.Shared.ParameterDiscreteValue

'Current parameter value object(collection) of crystal report parameters.
Dim currValue As CrystalDecisions.Shared.ParameterValues

'Sub report object of crystal report.
Dim mySubReportObject As _
CrystalDecisions.CrystalReports.Engine.SubreportObject

'Sub report document of crystal report.
Dim mySubRepDoc As New _
CrystalDecisions.CrystalReports.Engine.ReportDocument

Dim strParValPair() As String
Dim strVal() As String
Dim index As Integer

Try

'Load the report
objReport.Load(sReportName)

'Check if there are parameters or not in report.
intCounter = objReport.DataDefinition.ParameterFields.Count

'As parameter fields collection also picks the selection
' formula which is not the parameter
' so if total parameter count is 1 then we check whether
' its a parameter or selection formula.

If intCounter = 1 Then
If InStr(objReport.DataDefinition.ParameterFields(_
0).ParameterFieldName, ".", CompareMethod.Text) > 0 Then
intCounter = 0
End If
End If

'If there are parameters in report and
'user has passed them then split the
'parameter string and Apply the values
'to their concurrent parameters.

If intCounter > 0 And Trim(param) <> "" Then
strParValPair = param.Split("&")

For index = 0 To UBound(strParValPair)
If InStr(strParValPair(index), "=") > 0 Then
strVal = strParValPair(index).Split("=")
paraValue.Value = strVal(1)
currValue = _
objReport.DataDefinition.ParameterFields(_
strVal(0)).CurrentValues
currValue.Add(paraValue)
objReport.DataDefinition.ParameterFields(_
strVal(0)).ApplyCurrentValues(currValue)
End If
Next
End If

'Set the connection information to ConInfo
'object so that we can apply the
'connection information on each table in the report
ConInfo.ConnectionInfo.UserID = <User Name>
ConInfo.ConnectionInfo.Password = <Password>
ConInfo.ConnectionInfo.ServerName = <Server Name>
ConInfo.ConnectionInfo.DatabaseName = <Database Name>

For intCounter = 0 To objReport.Database.Tables.Count - 1
objReport.Database.Tables(intCounter).ApplyLogOnInfo(ConInfo)
Next

' Loop through each section on the report then look
' through each object in the section
' if the object is a subreport, then apply logon info
' on each table of that sub report

For index = 0 To objReport.ReportDefinition.Sections.Count - 1
For intCounter = 0 To _
objReport.ReportDefinition.Sections(_
index).ReportObjects.Count - 1
With objReport.ReportDefinition.Sections(index)
If .ReportObjects(intCounter).Kind = _
CrystalDecisions.Shared.ReportObjectKind.SubreportObject Then
mySubReportObject = CType(.ReportObjects(intCounter), _
CrystalDecisions.CrystalReports.Engine.SubreportObject)
mySubRepDoc = _
mySubReportObject.OpenSubreport(mySubReportObject.SubreportName)
For intCounter1 = 0 To mySubRepDoc.Database.Tables.Count - 1
mySubRepDoc.Database.Tables(_
intCounter1).ApplyLogOnInfo(_
ConInfo)sp;
mySubRepDoc.Database.Tables(_
intCounter1).ApplyLogOnInfo(ConInfo)
Next
End If
End With
Next
Next
'If there is a selection formula passed to this function then use that
If sSelectionFormula.Length > 0 Then
objReport.RecordSelectionFormula = sSelectionFormula
End If
'Re setting control
rptViewer.ReportSource = Nothing

'Set the current report object to report.
rptViewer.ReportSource = objReport

'Show the report
rptViewer.Show()
Return True
Catch ex As System.Exception
MsgBox(ex.Message)
End Try
End Function


نکات جالب

مشکلات اصلی هنگام develop کردن این تابع، زیرگزارشها و selection formula بودند. وقتی هیچ پارامتری وجود نداشت و فقط selection formula وجود داشت، تابع عمل نکرد، زیرا parameters collection، فرمول انتخاب (selection formula) را انتخاب می کرد.

راهنمای Crystal Reports

ارسال شده توسط administrator
23. مي 2010 12:29

clip_image002

مقدمه

کارکردن با Crystal Reports آسان نیست، و عیب و ایرادهای زیادی دارد.

یکی از بدترین ویژگی های Crystal Reports، روش مدیریت کردن پارامترهای گزارش توسط نمایش دادن هر پارامتر در یک صفحه جدا است که clientها واقعاً از آن بیزارند. برای حل این مشکل، این مقاله به شما نشان خواهد داد چگونه همه پارامترهای یک فایل .rpt را در یک صفحه واحد به کاربر نشان دهید.

این مقاله، گزارشهایی را که از در صفحه استفاده می کنند، نشان می دهد، یک Reports Viewer و یک Parameters Viewer. می توان این صفحه ها را با هم ترکیب کرد که بسیار آسان است. این صفحه ها شامل موارد زیر می شوند:

  • Reports Viewer: این صفحه دارای یک ComboBoxاست که لیستی از گزارشهایی را که کاربر می تواند انتخاب کند نشان می دهد. وقتی کاربر دکمه "Get Report" را فشار می دهد، یک پنجره که Parameters Viewer نامیده می شود باز می شود.
  • :Parameters Viewer این صفحه پارامترهای موجود در گزارشی را که در یک datagrid انتخاب شده نمایش می دهد، و ما به طور پویا (dynamic) کنترلهایی را به آن اضافه می کنیم تا valueهای انتخاب پارامتر را راحتتر کنیم. بعد از انتخاب valueهای پارامتر گزارش انتخابی، کاربر Parameters Viewer را می بندد و Reports Viewer، گزارش انتخاب شده را با پارامترهای انتخاب شده نمایش می دهد.

Crystal Reports، یک فایل باینری rpt ایجاد می کند که شامل همه اطلاعاتی می شود که برای نمایش هر گزارشی نیاز داریم.

  • فایل *.rpt را انتخاب کنید.
  • اطلاعات پارامتر را مستقیماً از فایل *.rpt بخوانید.
  • جدولی ایجاد کنید که همه پارامترهای انتخاب شده در فایل *.rpt را نمایش دهد.
  • جدول پارامتری که ایجاد می کنیم، باید همه کنترلهایی را هم که انتخاب پارامترهای ایجاد شده از قبیل تقویم، checkboxها، و غیره، را برای کاربر راحت می کنند، در بر بگیرد.
  • باید کنترلهای اعتبار سنجی ای از داده های پارامتر ایجاد کنیم که از فایل *.rpt خوانده ایم.
  • نهایتاً، داده های پارامتر را به Crystal Viewer ارسال می کنیم و Crystal Report انتخابی مان را نمایش می دهیم.
  • اطلاعات Database connection را از فایل*.rpt خوانده می شود.

خواندن داده های پارامتر از فایل های *.rpt

ما با ستونهای از پیش تعریف شده Datagrid پارامترهایمان از قبیل Parameter، Kind، Value، Min، Max، Prompt شروع کردیم. و هر نوع پارامتر را به عنوان یک ردیف جدید در datagrid مان اضافه خواهیم کرد.

  • BooleanParameter
  • CurrencyParameter
  • DateParameter
  • DateTimeParameter
  • NumberParameter
  • StringParameter
  • TimeParameter

برای ساختن یک datagrid پارامترها، پارامترها را به صورت زیر از فایل *.rpt می خوانیم:

 

CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinitions crParamFieldDefinitions
= crDoc.DataDefinition.ParameterFields;

foreach (CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinition _
def in crParamFieldDefinitions)

برای هر پارامتر در حلقه foreach، یک ردیف جدید با datagrid پویا که ستونهای از پیش تعریف شده دارد، اضافه می کنیم.

اضافه کردن کنترل به Datagrid پارامترها

چیزی که در مورد datagrid پارامترمان عجیب است، این است که ما هر پارامتر را به عنوان ردیفی جدید به جای ستون جدیدی، که در datagridها رایج تر است، اضافه می کنیم. این بدین معناست که باید یک از یک روش متفاوت برای اضافه کردن کنترلهای کاربر استفاده کرد. بدین منظور، باید از GotFocus event of the datagrid جهت حذف یا اضافه کردن کنترلها بر اساس نوع پارامتر که در ستون دوم datagrid لیست شده، استفاده کرد.

به همین جهت، من فقط سه نوع کنترل را پیاده کردم:

  • DateTime
  • TimePicker
  • CheckBox

به عنوان مثال، وقتی کاربری روی datagrid کلیک می کند، اگر ستون 2، دارای یک valueی DateTime باشد، آنگاه یک کنترل DateTime در سلول داده (data cell) ظاهر می شود که کاربر DateTime را انتخاب کند. در اینجا باید اشاره کرد که بعضی از برنامه نویسان استفاده از "Radio Button" را برای valueهای Boolean ترجیح می دهند. واضح است که شما می توانید از هر کنترلی که دوست دارید یا client درخواست می کند، استفاده کنید.

کنترل DateTime Picker

DateTime Picker، یک کنترل است که به کاربر اجازه می دهد یک valueی date، datetime یا یک valueی time را انتخاب کند و دو رابط (interface) مجزا بزای یک Calendar و یک Time Spinner در اختیار می گذارد.

کنترل DataTime

 

clip_image001 

 

image

جهت تنظیم کنترل DateTime به عنوان یک Time Spinner، ShowUpDown Boolean property را روی true قرار دهید، و Format property را به Time value تغییر دهید. Time Picker control، یک دکمه spin است که از بخشهای مختلفی تشکیل شده است. مقدار ساعت (hours value)، مقدار دقیقه (minutes value)، مقدار ثانیه (seconds value) که اختیاری است و رشته (string) AM/PM. جهت تغییر زمان، کاربر روی یک بخش کلیک می کند و از ماوس یا کیبورد جهت افزایش یا کاهش یک مقدار استفاده می کند. جهت تغییر داده مقدار دیگر، کاربر ابتدا باید روی آن کلیک کند و سپس از دکمه spin استفاده کند.

به طور پیش فرض، time با استفاده از فرمت H:M:SS AM/PM نمایش داده می شود. این بدین معناست که time از عدد 1 برای ساعتهای 0 تا 9، و دقایق 0 تا 9، و ثانیه ای 0 تا 9؛ و از AM یا PM برای نشان دادن صبح یا بعداز ظهر استفاده می کند. جهت سفارشی کردن روش نمایش دادن time، ابتدا Format property را به Custom تغییر دهید. سپس، در CustomFormat property، از ترکیبی از این کارکترها جهت ایجاد یک فرمت سفارشی استفاده کنید: hh:mm:tt. اگر بخواهید زمان متفاوتی را تنظیم کنید، ترکیب Format را به Value property اعمال کنید. به همان طریق، می توانید مقدار time روی کنترل را با دسترسی به Value property بازیابی کنید.

نکات جالب

خروج فایلها (File Experts)

می توان گزارشهای بارگذاری شده را در فرمتهای گوناگون export کرد:

  • Rich Text Document (RTF)
  • Portable Document (PDF)
  • Microsoft Word (DOC)
  • Microsoft Excel (XLS)
  • Crystal Report (RPT)
  • HTML 3.2 (HTML)
  • HTML 4.0 (HTML)

فایل اختیاری Uranus

در حالیکه سیاره اورانوس، یک سیاره تاریک و پر از گاز است، در این مقاله من Uranus را به عنوان یک فایل XML موقت آورده ام که می توانید در صورت تمایل از آن جهت ذخیره داده های پارامتر استفاده کرد.

Pathwayهای پروژه

این کلاس، یک کلاس ساده است که ارسال valueهای پارامترهای جدا را به Crystal Reports آسانتر می کند. این کلاس به شما اجازه می دهد optionهای پارامتر را سفارشی کنید، بدون اینکه مجبور به بازنویسی همه کدها جهت ارسال پارامترها به Crystal Reports باشید.

Drop Down اتوماتیک تقویم

اگر می خواهید تقویم را هنگامی که روی calendar field در datagrid کلیک می شود، drop down کنید، می توانید پیام ویندوز WM_KEYDOWN = 0x100 را جهت update کردن این دکمه با استفاده از کد زیر ارسال کنید:


 

Win32.SendMessage(dtp.Handle, 0x100, 0x73, 0x3E0001)

 

تنظیم پهنای ComboBox DropDown

ما به طور اتوماتیک پهنای combobox ایجاد شده در datagrid cell را با پهنای طولانی ترین عنصر، با استفاده از رویداد combobox's DropDown به شرح زیر تنظیم می کند:

private void AdjustWidthComboBox_DropDown(object sender, System.EventArgs e) {
ComboBox senderComboBox = (ComboBox)sender;
int width = senderComboBox.DropDownWidth;
Graphics g = senderComboBox.CreateGraphics();
Font font = senderComboBox.Font;
int vertScrollBarWidth =
(senderComboBox.Items.Count>senderComboBox.MaxDropDownItems)?
SystemInformation.VerticalScrollBarWidth:0;
int newWidth;
foreach (Object s in senderComboBox.Items) {
string ss = senderComboBox.GetItemText(s);
newWidth = (int)g.MeasureString(ss, font).Width + vertScrollBarWidth;
if (width < newWidth) { width = newWidth; }
}
senderComboBox.DropDownWidth = width;
}

 

override کردن رویداد CrystalViewer's Refresh

اگر رویداد CrystalViewer's Refresh را override نکنیم، هر بار که صفحه را refresh می کنیم، یک صفحه popup برای دریافت پارامترهای Crystal Viewer ظاهر می شود. ما فقط کار زیر را انجام می دهیم.

private void CrystalReportViewer1_ReportRefresh(object source,
CrystalDecisions.Windows.Forms.ViewerEventArgs e) { e.Handled = true; }


نحوه کاربرد Crystal Reports در برنامه های تحت ویندوز C#.NET

ارسال شده توسط administrator
23. مي 2010 11:49

Crystal Reporting

با استفاده از C#.NET

2003 Windows Application

مرحله 1: جهت باز کردن سند crystal report، روی پروژه راست کلیک کنید.

Add و سپس Add New item را انتخاب کنید. پنجره جدیدی مانند زیر ظاهر می شود. به گزارشتان اسم بدهید.

clip_image001

مرحله 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 احتیاج دارید، اضافه کنید. پنجره، شبیه این خواهد بود.

clip_image002

مرحله 4:

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

clip_image003

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 راست کلیک کنید و آن را نامگذلری کنید.

clip_image001[4]صفحه ویرایش 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]

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 شما آماده است.