1、按照正常的方法,新建一个报表文件,和数据库中的一张表关联好,设计好报表式样
和数据库关联时可以先建立一个access文件,做一个假的数据库
2、动态绑定数据源和动态绑架数据以及参数的方式
protected void Page_Load(object sender, EventArgs e)
{
//声明报表的数据对象
CrystalDecisions.CrystalReports.Engine.Database crDatabase;
CrystalDecisions.CrystalReports.Engine.Table crTable;
TableLogOnInfo dbConn = new TableLogOnInfo();
// 创建报表对象opt
ReportDocument oRpt = new ReportDocument();
// 加载已经做好的报表
oRpt.Load("E:\\Jsmstc\\Jsmstc_MIS Project Managemet\\03_Source\\Web\\ReportTest.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 = "jsmstc_mis";
dbConn.ConnectionInfo.ServerName = "192.168.0.50";
dbConn.ConnectionInfo.UserID = "jsmstc";
dbConn.ConnectionInfo.Password = "jsmstc";
//将登陆的信息应用于crtable表对象
crTable.ApplyLogOnInfo(dbConn);
//填充数据
M_AdvisoryBusiness AdvisoryBusiness = new M_AdvisoryBusiness(Request.GetHashCode());
DataTable AdvisoryData = AdvisoryBusiness.GetDataTableForReport();
oRpt.SetDataSource(AdvisoryData);
//将报表和报表浏览控件绑定
CrystalReportViewer1.ReportSource = oRpt;
//传递参数
//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 pfItemAddr = new ParameterField();
// 设置在报表中,将要接受的参数字段的名称
pfItemAddr.ParameterFieldName = "Query1";
ParameterDiscreteValue dcItemAddr = new ParameterDiscreteValue();
dcItemAddr.Value = "dd";
pfItemAddr.CurrentValues.Add(dcItemAddr);
paramFields.Add(pfItemAddr);
// 将参数集合绑定到报表浏览控件
CrystalReportViewer1.ParameterFieldInfo = paramFields;
注意使用动态方式后,在报表设计中不能再使用SQL表达式字段了
3、小技巧
每一种格式的设置都可以通过Crystal 语法控制是否应用此格式 当为true时应用,为false时不使用
4、边框的设置
在水晶报表里设好边框后,在winform中是可以看到边框的,但是使用webform显示在页面上是没有边框的(只有当导出时才能看到边框)
在web页面上显示边框还不知道怎么实现??
5、设置分页
可以设定每页显示多少条记录,比如每页6条
在详细资料上点格式化节,在后面页新建页打勾
公式中输入:
if onlastrecord then
formula = false
else
if RecordNumber mod 6 =0 then
formula =true
else
formula =false
end if
end if
'(BASIC 语法)
本文转自永春博客园博客,原文链接:http://www.cnblogs.com/firstyi/archive/2006/10/20/534500.html,如需转载请自行联系原作者