当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  ASP.NET中利用Crystal Report创建图表(3)

 ASP.NET中利用Crystal Report创建图表(3)

点击次数:22 次 发布日期:2008-11-26 14:15:16 作者:源代码网
源代码网推荐     
源代码网推荐    再次选择报表专家,在弹出的窗口中选择数据页,在数据可用字段中选择salesdate,并且可以在文本页中,设置适当的报表标题。
源代码网推荐  
源代码网推荐  
源代码网推荐   由于要根据输入的日期,货品参数来动态显示报表,因此我们要设置参数字段。在报表设计器中,在字段资源管理器中,选择参数字段,鼠标右击选择“新建”,新建如下三个参数字段。
源代码网推荐  
源代码网推荐  
源代码网推荐  名称: 类型:
源代码网推荐  ItemId Number
源代码网推荐  StartDate Date
源代码网推荐  EndDate Date
源代码网推荐  
源代码网推荐    
源代码网推荐    最后,要设置相关的查询公式,在除报表页眉的区域,鼠标右键点击,在弹出菜单中选择“报表|编辑选择公式|记录”,输入如下的公式:
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐  在上面的公式编辑器中,分为左中右三部分,左边的是报表的字段,中间的是相关的功能函数,最右边的是运算符,双击其中选中的部分,则可以添加到下部的公式显示区域中。最后,保存建立的公式。
源代码网推荐  
源代码网推荐    在程序中使用报表
源代码网推荐  
源代码网推荐    接下来,我们可以在程序中用代码处理和报表的连接过程。首先,在工程项目中,增加如下的两个命名空间的引用(注意,在代码中也必须用using引入它们):
源代码网推荐  
源代码网推荐  CrystalDecisions.CrystalReports.Engine
源代码网推荐  CrystalDecisions.Shared
源代码网推荐  在viewreport.aspx的Page_load事件中,加入以下代码
源代码网推荐  
源代码网推荐  //接收传递的参数
源代码网推荐  nItemId = int.Parse(Request.QueryString.Get("ItemId"));
源代码网推荐  strStartDate = Request.QueryString.Get("StartDate");
源代码网推荐  strEndDate = Request.QueryString.Get("EndDate");
源代码网推荐  //声明报表的数据对象
源代码网推荐  CrystalDecisions.CrystalReports.Engine.Database crDatabase; CrystalDecisions.CrystalReports.Engine.Table crTable;
源代码网推荐  TableLogOnInfo dbConn = new TableLogOnInfo();
源代码网推荐  // 创建报表对象opt
源代码网推荐  ReportDocument oRpt = new ReportDocument();
源代码网推荐  // 加载已经做好的报表
源代码网推荐  oRpt.Load("F:\aspnet\WroxWeb\ItemReport.rpt");
源代码网推荐  //连接数据库,获得相关的登陆信息
源代码网推荐  crDatabase = oRpt.Database;
源代码网推荐  //定义一个arrtables对象数组
源代码网推荐  object[] arrTables = new object[1];
源代码网推荐  crDatabase.Tables.CopyTo(arrTables, 0);
源代码网推荐  crTable = (CrystalDecisions.CrystalReports.Engine.Table)arrTables[0]; dbConn = crTable.LogOnInfo;
源代码网推荐  //设置相关的登陆数据库的信息
源代码网推荐  dbConn.ConnectionInfo.DatabaseName = "WroxSellers"; dbConn.ConnectionInfo.ServerName = "localhost";
源代码网推荐  dbConn.ConnectionInfo.UserID = "sa";
源代码网推荐  dbConn.ConnectionInfo.Password = "test";
源代码网推荐  //将登陆的信息应用于crtable表对象
源代码网推荐  crTable.ApplyLogOnInfo(dbConn);
源代码网推荐  //将报表和报表浏览控件绑定
源代码网推荐  crViewer.ReportSource = oRpt;
源代码网推荐  //传递参数
源代码网推荐  setReportParameters();
源代码网推荐  
源代码网推荐    在上面的代码中,首先接收了日期,货品编号等参数,并实例化了Database, Table和 TableLogOnInfo 三个类,它们是用来在运行时,建立报表和数据库的连接必需的。再使用
源代码网推荐  
源代码网推荐  oRpt.Load("F:\aspnet\WroxWeb\ItemReport.rpt");
源代码网推荐  
源代码网推荐    来装载已经做好了的报表。
源代码网推荐  
源代码网推荐    在装载完报表后,将数据库中要使用的表复制到一个对象数组中去,并选择对象数组中的第一个表元素,将其转换为水晶报表的报表对象。接着,再设置LOGONINFO中的登陆数据库的信息。最后,将报表源与报表浏览控件绑定。
源代码网推荐  
源代码网推荐    传递参数到水晶报表
源代码网推荐  
源代码网推荐    定义一个新的过程,setReportParameters(),代码如下:
源代码网推荐  
源代码网推荐  private void setReportParameters()
源代码网推荐  {
源代码网推荐  // all the parameter fields will be added to this collection
源代码网推荐  ParameterFields paramFields = new ParameterFields();
源代码网推荐  // the parameter fields to be sent to the report
源代码网推荐  ParameterField pfItemId = new ParameterField();
源代码网推荐  ParameterField pfStartDate = new ParameterField();
源代码网推荐  ParameterField pfEndDate = new ParameterField();
源代码网推荐  // 设置在报表中,将要接受的参数字段的名称
源代码网推荐  pfItemId.ParameterFieldName = "ItemId";
源代码网推荐  pfStartDate.ParameterFieldName = "StartDate";
源代码网推荐  pfEndDate.ParameterFieldName = "EndDate";
源代码网推荐  ParameterDiscreteValue dcItemId = new ParameterDiscreteValue();
源代码网推荐  ParameterDiscreteValue dcStartDate = new ParameterDiscreteValue(); ParameterDiscreteValue dcEndDate = new ParameterDiscreteValue();
源代码网推荐  
源代码网推荐  dcItemId.Value = nItemId;
源代码网推荐  dcStartDate.Value = DateTime.Parse(strStartDate);
源代码网推荐  dcEndDate.Value = DateTime.Parse(strEndDate);
源代码网推荐  
源代码网推荐  pfItemId.CurrentValues.Add(dcItemId);
源代码网推荐  pfStartDate.CurrentValues.Add(dcStartDate); pfEndDate.CurrentValues.Add(dcEndDate);
源代码网推荐  paramFields.Add(pfItemId);
源代码网推荐  paramFields.Add(pfStartDate);
源代码网推荐  paramFields.Add(pfEndDate);
源代码网推荐  
源代码网推荐  // 将参数集合绑定到报表浏览控件
源代码网推荐  crViewer.ParameterFieldInfo = paramFields;
源代码网推荐  }
源代码网推荐  
源代码网推荐    现在来解释一下上面的代码。在水晶报表中,浏览器控件有一个属性parameterfieldsinfo,该属性可以通过绑定parameterfields类型的集合,将相关的参数的实际数值传递到报表。Parameterfields类型集合通过add的方法,接收Parameterfield类型的对象。因此,我们先为itemid,startdate,enddate三个参数创建parameterfield类型的对象,并且设置它们对应报表中接受参数的名称:
源代码网推荐  
源代码网推荐  ParameterFields paramFields = new ParameterFields();
源代码网推荐  ParameterField pfItemId = new ParameterField();
源代码网推荐  ParameterField pfStartDate = new ParameterField();
源代码网推荐  ParameterField pfEndDate = new ParameterField();
源代码网推荐  // 设置在报表中,将要接受的参数字段的名称
源代码网推荐  pfItemId.ParameterFieldName = "ItemId";
源代码网推荐  pfStartDate.ParameterFieldName = "StartDate";
源代码网推荐  pfEndDate.ParameterFieldName = "EndDate";
源代码网推荐  
源代码网推荐    接着,可以为这些参数字段设置具体的值了,但由于parameterfield必须接受P arameterDiscreteValue类型的对象,所以,再创建相关的实例:
源代码网推荐  
源代码网推荐  ParameterDiscreteValue dcItemId = new ParameterDiscreteValue();
源代码网推荐  ParameterDiscreteValue dcStartDate = new ParameterDiscreteValue();
源代码网推荐  ParameterDiscreteValue dcEndDate = new ParameterDiscreteValue();
源代码网推荐  dcItemId.Value = nItemId;
源代码网推荐  dcStartDate.Value = DateTime.Parse(strStartDate);
源代码网推荐  dcEndDate.Value = DateTime.Parse(strEndDate);
源代码网推荐  
源代码网推荐    最后,就可以在三个parameterfield的对象中的currentvalues中设置它们的值,并往paramFields集合中加进这三个parameterfield对象。
源代码网推荐  
源代码网推荐    运行的结果如下。
源代码网推荐  
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华