PDA

View Full Version : آموزش: ارتباط با کریستال ریپورت و پاس کردن پارامتر در ASP.Net با زبان #C



tazarvmmr
یک شنبه 28 آذر 1389, 19:53 عصر
سلام به همه
من توی سایت خیلی دنبال اطلاعات درست و روشنی در مورد ارتباط با کریستال ریپورت گشتم و حتی یک سوال هم مطرح کردم که کسانی که در این مورد تجربه دارن جواب بدن و مشکل من حل بشه ولی متاسفانه بعد از گذشت شاید یکماه یا بیشتر کسی پاسخی نداد که البته من اینو به فال نیک میگیرم چون باعث شد که خودم برم دنبالش و این مبحثو یاد بگیرم.
حالا یک کد اینجا میگزارم برای کسانی که در کار با کریستال ریپورت مشکل دارن و مثلا ارور Login Fail یا Load Error میگیرن:

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





String reportFilePath="my report name includin it's path";

ReportDocument myReport = new ReportDocument();

ParameterField paramField = new ParameterField();

ParameterFields paramFields = new ParameterFields();

ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();

paramField.Name = "my parameter name";

paramDiscreteValue.Value = "my parameter value";

paramField.CurrentValues.Add(paramDiscreteValue);

paramFields.Add(paramField);

TableLogOnInfos crtableLogoninfos = new TableLogOnInfos();

TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();

ConnectionInfo crConnectionInfo = new ConnectionInfo();

Tables CrTables;

myReport.Load(Server.MapPath(reportFilePath));

crConnectionInfo.ServerName = ServerName;

crConnectionInfo.DatabaseName = "my database name ";

crConnectionInfo.UserID = "database user name";

crConnectionInfo.Password = "database password";

CrTables = cryRpt.Database.Tables;

foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)

{

crtableLogoninfo = CrTable.LogOnInfo;

crtableLogoninfo.ConnectionInfo = crConnectionInfo;

CrTable.ApplyLogOnInfo(crtableLogoninfo);

}

CrystalReportViewer1.ReportSource = myReport;

CrystalReportViewer1.RefreshReport();

CrystalReportViewer1.ParameterFieldInfo = paramFields;


امیدوارم به دردتون بخوره

sima_2n5k
شنبه 02 بهمن 1389, 12:47 عصر
سلام
من یه مشکلی دارم با کریستال اونم اینکه تو وب سایت(با c#) یه dataset bind کردم به کریستالم ولی وقتی بر فرض مثال میخوام روی دکمه پرینت کلیک کنم ارور میده که دوباره به دیتابیس وصل شم! چطور می تونم به این دکمه های کریستال دسترسی پیدا کنم تا dataset یه بار دیگه bind کنم؟
این کدی که نوشتم:
int errorNo = 0;
MPIS.GUI.Web.MPISServiceRef.MPISService MPService1 = (MPIS.GUI.Web.MPISServiceRef.MPISService)Applicati on["service"];

DataSet ds = MPService1.GetFinancialReport_ByProjectGrouping_Wi thOutCBS(tvSelectedTaskGuid, out errorNo);
ReportDataTable = ds.Tables[0];


ReportDocument doc = new ReportDocument();
doc.Load(Server.MapPath("/CrystalReports/Chart_ChashInPlan_ProjectGroup_WithOutCBS.rpt"));
doc.SetDataSource(ReportDataTable);
CrystalReportViewer1.ReportSource = doc;