用户可以使用ActiveReports参数(Parameters)集合把数据提供给报表中的文本框或图表,也可以选择数据的一个子集显示到报表的特定区域,或者是把数据从主报表象子报表传递。用户可以通过三种方式获取数据的值:提示用户输入;从主报表取值并传递给子报表;从Windowsform或者Webform上取值。

1、创建报表文件

在应用程序中创建一个名为rptOrderDetails.rdlx的ActiveReports报表文件,使用的项目模板为ActiveReports页面报表,创建完成之后从VS的报表菜单项中选择转换为连续页面布局(CPL)报表,将固定页面报表转换为连续页面报表。

2、打开报表资源管理器,在参数节点中添加以下三个报表参数参数1:名称:ProductID
数据类型:Integer
提示用户输入值显示的问题:产品名称:
多值:True参数2:名称:StartDate
数据类型:DateTime
提示用户输入值显示的问题:起始日期:参数3:名称:EndDate
数据类型:DateTime
提示用户输入值显示的问题:截止日期:

3、打开报表资源管理器,并按照以下信息创建报表数据源名称:NWind_CHS类型:MicorsoftOleDbProviderOLEDB提供程序:Microsoft.Jet.OLEDB.4.0服务器或文件名称:Data\NWind_CHS.mdb

4、添加数据集

在新建的NWind_CHS数据源上鼠标右键并选择添加数据集菜单项

4.1、添加数据集参数

参数1:名称:Param1
值:=[@ProductID]参数2:名称:Param2
值:=[@ProductID]参数3:名称:Param3
值:=[@StartDate]参数4:名称:Param1
值:=[@EndDate]

说明:在添加参数设置值属性时,可以点击下拉列表,并选中表达式选项,然后在表达式编辑对话框中设置参数的值

4.2、设置数据集其他属性

常规-名称:OrderDetails

查询-查询:

SELECT 订单.订单ID, 订单.客户ID, 订单.订购日期, 产品.产品名称,订单明细.数量, 订单明细.单价, 订单明细.折扣 from((订单innerjoin 订单明细 on 订单.订单ID =订单明细.订单ID)innerjoin 产品 on 订单明细.产品ID =产品.产品ID)where (订单明细.产品ID in (?) or-1in (?)) andDateDiff("d",?,订购日期) >0andDateDiff("d",?,订购日期) <0ORDERBY 订单.订单ID;

说明:在以上查询语句Where条件中使用了参数查询,参数使用的是?占位,?的出现顺序需要与数据集参数中定义的参数顺序一致。同时,?是Access中的查询参数设置方式,SQLServer中需要使用以@开始的字符串作为参数。

5、设计报表界面

从VisualStudio工具箱中将Table控件添加到报表设计界面,并将OrderDetails数据集中的字段拖拽到Table的相应列中,得到的设计界面如下:

6、运行程序

通过F5键运行程序,在参数面板中输入值之后,点击查看报表按钮,将得到以下结果:

7、自定义报表参数面板

ActiveReports报表处理支持内置的报表参数面板,您还可以提供独立于报表Viewer控件的自定义报表参数面板,类似的实现效果如下:

然后在“运行报表”按钮的Click事件中实现报表参数的设置并运行报表:

protectedvoid btnRun_Click(object sender, EventArgs e)

{

GrapeCity.ActiveReports.PageReport report1 = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath("PageReport1.rdlx")));

report1.Report.ReportParameters[0].DefaultValue.Values.Add(txtParam.Text);

WebViewer1.Report = report1;

}×××地址:


http://www.gcpowertools.com.cn/products/activereports_demo.htm