ActiveReports 报表应用教程 (8)---交互式报表之动态过滤

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

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

1、创建报表文件

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

2、打开报表资源管理器,在参数节点中添加以下三个报表参数

参数1: 名称:ProductID
数据类型:Integer
提示用户输入值显示的问题:产品名称:
多值:True
参数2: 名称:StartDate
数据类型:DateTime
提示用户输入值显示的问题:起始日期:
参数3: 名称:EndDate
数据类型:DateTime
提示用户输入值显示的问题:截止日期:

 

3、打开报表资源管理器,并按照以下信息创建报表数据源

名称: NWind_CHS
类型: Micorsoft OleDb Provider
OLE DB 提供程序: 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]

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

ActiveReports 报表功能展示 表达式编辑器

4.2、设置数据集其他属性

常规-名称:OrderDetails

查询-查询:

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

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

5、设计报表界面

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

ActiveReports 报表功能展示 页面报表

6、运行程序

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

ActiveReports 报表功能展示 报表参数

7、自定义报表参数面板

 

 

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

ActiveReports 自定义报表参数面板 

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

    protected void 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

相关阅读:

【报表福利大放送】100余套报表模板免费下载 

 矩表 - 现代数据分析中必不可少的报表工具

 

相关文章
|
12月前
|
缓存 前端开发 JavaScript
前端技术探索:构建高效、响应式Web应用的秘诀
前端技术探索:构建高效、响应式Web应用的秘诀
262 0
|
安全 搜索推荐 PHP
信息收集的利器,Google骇客语法
信息收集的利器,Google骇客语法
277 2
|
自然语言处理
【NLP】如何实现快速加载gensim word2vec的预训练的词向量模型
本文探讨了如何提高使用gensim库加载word2vec预训练词向量模型的效率,提出了三种解决方案:保存模型以便快速重新加载、仅保存和加载所需词向量、以及使用Embedding工具库代替word2vec原训练权重。
731 2
|
SQL 存储 大数据
SQL Server 跨版本数据迁移实践
SQL Server 的导入和导出向导是一个非常有用的工具,可以帮助用户快速导入和导出数据,而无需编写复杂的 SQL 查询或程序代码。使用导入和导出向导,用户可以选择数据源、目标数据、映射源和目标列、指定导入或导出选项以及完成导入或导出操作,整个使用体验也非常简单便捷。
737 0
|
存储 缓存 NoSQL
如何在Java中使用Redis
如何在Java中使用Redis
|
数据采集 JavaScript 前端开发
动态内容抓取指南:使用Scrapy-Selenium和代理实现滚动抓取
在传统的网络爬虫中,静态网页内容很容易抓取,但对于通过JavaScript加载的动态内容,通常需要借助浏览器进行模拟访问。Scrapy-Selenium是一款结合了Scrapy和Selenium功能的库,可以实现模拟浏览器行为,从而实现抓取动态内容的目的。
751 0
动态内容抓取指南:使用Scrapy-Selenium和代理实现滚动抓取
|
存储 XML JSON
一些常用网络相关命令行工具的区别
一些常用网络相关命令行工具的区别
186 1
|
JSON 测试技术 数据格式
FastAPI(60)- 针对 WebSocket 进行单元测试
FastAPI(60)- 针对 WebSocket 进行单元测试
400 0
FastAPI(60)- 针对 WebSocket 进行单元测试
|
机器学习/深度学习 自然语言处理 TensorFlow
【NLP】NLTK工具集使用
关于nltk的下载还是很多坑的,如果直接import nltk和nltk.download()下载失败,可参考: (1)nltk安装失败:由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。 (2)直接下载github的nltk:https://github.com/nltk/nltk_data。我一开始就是一直报错For more information see:
468 0
【NLP】NLTK工具集使用
|
运维 达摩院 Kubernetes
《2023云原生实战案例集》——01 汽车/制造——苏打智能 借力阿里云AHPA轻松应对突发流量
《2023云原生实战案例集》——01 汽车/制造——苏打智能 借力阿里云AHPA轻松应对突发流量