在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
前一段时间,由于在项目中要用到报表做统计,所以我学习了一下ASP.NET水晶报表的使用。水晶报表的执行模式(也就是取数据的方法)可以分为两种: 第一种是Pull模式:被请求时,水晶报表直接根据指定的驱动连接数据库然后组装这些数据。 另外一种就是Push模式:此时开发者不得不自己编写代码连接数据并组装DataSet,同时将它传送至报表。在些这种情况下,通过使用连接共享以及限制记录集合的大小,可以使用报表性能最大化。 水晶报表中的报表类型也分为两种: --StrongTyped 报表: 当你将报表文件加入到项目中去时,它就变成了一个了“ strongly-typed“报表。在这些情况下,你将拥有直接创建报表的对象的权力,这将减少一些代码并且能够提供一些性能。 --UnTyped报表:这里的报表并不直接包含在项目中,因此称为‘un-typed' 报表。在这种情况下,你不得不使用水晶报表的”ReportDocuemt“对象建立一个实例,并且”手动“地凋用报表。 使用Pull模式 我们将通过下面的这些步骤来通过Pull模式来执行水晶报表 复制代码 代码如下: ReportDocument ReportDoc = new ReportDocument(); ReportDoc.Load(Server.MapPath("MyPullDemo.rpt")); #region 解决登录错误问题 TableLogOnInfo logonInfo = new TableLogOnInfo();// foreach( CrystalDecisions.CrystalReports.Engine.Table tb in ReportDoc.Database.Tables) { logonInfo = tb.LogOnInfo; logonInfo.ConnectionInfo.ServerName = "(local)"; logonInfo.ConnectionInfo.DatabaseName = "myDatabase";// logonInfo.ConnectionInfo.UserID = "sa"; logonInfo.ConnectionInfo.Password = "sa1234";// tb.ApplyLogOnInfo(logonInfo); } #endregion CrystalReportViewer1.ReportSource = ReportDoc; CrystalReportViewer1.DataBind();
复制代码 代码如下: ReportDocument ReportDoc = new ReportDocument(); ReportDoc.Load(Server.MapPath("MyPushDemo.rpt")); string strProvider = "Server=(local);DataBase=myDatabase;UID=sa;PWD=sa1234"; SqlConnection MyConn = new SqlConnection(strProvider); MyConn.Open(); string strSel = "Select * from SaleOfCuntry"; SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel,MyConn); --这里的ds与.rpt文件连接数据库所用的DataSet结构完全相同,名称可以不同 建立.rpt文件时DataSet的作用是为rpt文件提供一种架构。 这里 用dataadapter填充数据集的一个实例,作为报表的数据源。 复制代码 代码如下: DataSet ds = new DataSet(); MyAdapter.Fill(ds,"SaleOfCuntry"); ReportDoc.SetDataSource(ds); Crv.ReportSource = ReportDoc; Crv.DataBind(); |
请发表评论