预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

首先在界面上放置两个dataTimePicker控件,分别取名dtpStart,dtpEnd,可以任意选择起止时间,一个“测试报表”按钮(本案例该按钮起到刷新报表作用),取名btnReport,还有crytalReportView控件是少不了的(要不然怎么查看报表呢:)),采用默认名称,Form界面就这些东西。既然是PUSH模式,就必须给它一个“骨架”,在项目中添加新项选择数据集,如图示:名称随意(我这里是默认名DataSet1),然后打开数据集设计界面,右击->添加->DataTable,此时界面已多出DataTable1,右击DataTable1->添加->列,输入列名dtValue,在属性框中更改其数据类型为System.DateTime,如图示:继续添加两列(根据需求而定,这里的列相当于数据库中的字段),TextType(System.String),iCount(System.Int32),记得保存,此时“骨架”构造完毕,此时还是一个空匣子。往项目中添加一模板rpt文件,跟刚才添加数据集过程类似,我这边继续采用默认名,打开rpt文件,会有一个“字段资源管理器”框,右击数据库字段->数据库专家,会弹出一个数据库专家界面,在这个界面我们把刚才构造的“骨架”放到报表中来,如图示:在数据库字段中把要显示的字段拖放到报表详细资料节,如图示:然后插入交叉表,该是本文的重点之一:右击报表尾空白处->插入->交叉表,在交叉表专家中设置如下:重点也就是这样,很简单吧:)然后我们设置下日期和数字的显示格式,右击日期字段dtValue对象->设置对象格式相应的数字对象也设置下这样交叉表部分就算完成了,最后我们再根据设置的起止时间进行数据过滤(本文另一重点)这里我们用两个参数来接收这两个起止时间值,在字段资源管理器中右击参数字段->新建,如图示同理再新建一参数(注意类型的选择),取名periodEnd,然后在报表空白处点右键->报表->选择专家,此时会弹出选择专家界面点确定后在设置如下:嗯,最后该进入代码部分了 //我这里设置成全局变量 DataSet1ds=newDataSet1(); privatevoidbtnReport_Click(objectsender,EventArgse) { CrystalReport1myReport=newCrystalReport1(); //给报表设置数据源 myReport.SetDataSource(ds); /*注意这里的起止时间设置 *如果直接把dtpStart.Value和dtpEnd.Value传给水晶报表, *并且dtpStart.Value和dtpEnd.Value设为同一天的情况下,则无记录呈现*/ DateTimestart=Convert.ToDateTime(dtpStart.Value.ToShortDateString()+"0:0:0"); DateTimeend=Convert.ToDateTime(dtpEnd.Value.ToShortDateString()+"23:59:59"); //把参数传给水晶报表 myReport.SetParameterValue("periodStart",start); myReport.SetParameterValue("periodEnd",end); crystalReportViewer1.ReportSource=myReport; } //页面加载时给“空壳”数据集DataSet1填充数据,此时的“骨架”就不再是一个空匣子了~ privatevoidForm1_Load(objectsender,EventArgse) { ds.DataTable1.AddDataTable1Row(Convert.ToDateTime("2010-5-1"),"空柜查询",25); ds.DataTable1.AddDataTable1Row(Convert.ToDateTime("2010-5-1"),"拖车做柜查询",35); ds.DataTable1.AddDataTable1Row(Convert.ToDateTime("2010-5-1"),"集装箱查询",28); ds.DataTable1.AddDataTable1Row(Convert.ToDateTime("2010-5-2"),"空柜查询",27); ds.DataTable1.AddDataTable1Row(Convert.ToDateTime("2010-5-2"),"拖车做柜查询",30); ds.DataTable1.AddDataTable1Row(Convert.ToDateTime("2010-5-2"),"集装箱查询",32)