PDA

View Full Version : نسبت دادن storeprocedure به کریستال ریپورت در asp.net



unique1984
سه شنبه 19 آذر 1387, 13:08 عصر
با سلام
من قبلا از طریق #C گزارشهای متعددی ساختم اما الان که میخوام این گزارشها رو تحت وب بسازم به یه مشکلی برخوردم.
روال ساخت گزارش در #c به صورت زیر بود:
ابتدا یک آیتم DataSet اضافه می کردم و تیبل ها و استورپروسیجرهاو ... رو اونجا add میکردم.
بعد یه آیتم CrystalReport اضافه می کردم و در قسمت database fields/Database Expert/ProjectData/Ado.net dataset جداول و استور پروسیجرهایی که در dataset اضافه کرده بودم ظاهر میشد و بر حسب نیاز یکی از اونا رو انتخاب می کردم و ...
و اما مشکل:
حالا که پروژه از نوع WebSite هستش، در مرحله دوم یعنی اضافه کردن CrystalReport اون جداول و استور پروسیجرهایی که در dataset اد کردم ، نمایش داده نمی شند. نمیدونم مشکلش چیه؟؟!! بهر حال برای دیزاین گزارش حتما به فیلدهای این جداول و استورپروسیجرها نیازه.
ممنون

esfahanitg
چهارشنبه 20 آذر 1387, 22:32 عصر
سلام . براي طراحي گزارش تحت asp.net ميتونين بعد از اينكه datatable مورد نظرتون رو توي يك datasetساختين پنجره dataset رو ببندين تا همه اطلاعات ذخيره بشند و بعد يك فايل كريستال ريپورت به پروژه اضافه كنيد و در ويزارد ايجاد اين فايل از اين datatable براي ايجاد ساختار گزارش استفاده كنيد. اما براي صدا زدن و باز كردن فايل گزارشتون بايد روشي متفاوت با روش C#.net استفاده كنيد .براي نمايش گزارشتون ميتونين روي يك صفحه asp.net يك كامپوننت CrystalReportViewer قرار بديد و در رويداد Pageload كد زير رو بنويسيد:
CrystalDecisions.CrystalReports.Engine.ReportDocum ent rpt = new CrystalDecisions.CrystalReports.Engine.ReportDocum ent();
rpt.Load(Request.PhysicalApplicationPath + "CrystalReport.rpt");
rpt.SetDatabaseLogon("testlogin","123456");
string select="select * from customer";
SqlConnection con=new SqlConnection(ConfigurationManager.ConnectionStrin gs[1].ToString());
SqlDataAdapter da=new SqlDataAdapter (select,con);
DataTable dt=new DataTable();
da.Fill(dt);
Response.Write(Request.PhysicalApplicationPath + "CrystalReport.rpt");
rpt.SetDataSource(dt);
CrystalReportViewer1.DisplayGroupTree = false;
CrystalReportViewer1.ReportSource =rpt;
CrystalReportViewer1.DataBind();

كد:
rpt.SetDatabaseLogon("testlogin","123456");
براي اين نوشته شده تا اگر ديتا بيس شما از Login و User,Pass واسه ورود استفاده مي كنه زمان اجرا ديگه از شما User,pass نخواهد.در اينجا فرض كرديم ديتا بيس ما يك User به اسمtestlogin وپسورد 123456 دارد