如何在Web填报报表中实现:关联过滤输入同时支持单选,多选和全不选(空填报)
在你web报表项目中,常常会遇到在填报报表中用下来框实现关联过滤的情况,比如,在省份填报格中下来选定山东省后,在接下来的城市选择框中会自动出现山东省内的城市,供用户选择。
但问题紧接着就来了,用户可能会选择山东省的一个城市,或者选多个城市,甚至什么都不选,从而想输出山东省所有城市的信息,这时应该如何实现?
有过Web报表开发经验的人可能都会知道这个看似简单的功能实现起来有多么复杂!比如用Hibernate编程实现会非常麻烦。
下文提供一个基于快逸报表的解决方案,可以非常方便地解决这个问题!快逸报表是一个纯Java开发的强大的Web报表工具软件,开发人员可以很方便地基于快逸实现关联过滤输入时对单选,多选和全不选(空填报)的支持。
实现下面的方法需要下载并安装快逸报表,快逸报表下载地址:http://www.quiee.com.cn/archives/337
问题描述:
假设web报表用户需要相关城市的订单信息,现在在快逸报表有如下两个报表文件:
一张为参数模板dingdan_arg.raq,一张为报表dingdan.raq。
参数模板:
在参数模板dingdan_arg.raq中,设置的数据集的SQL如下:
SQL:SELECT 订单.货主地区,订单.货主城市 FROM 订单
dingdan_arg.raq中有A,B两列和1,2两行,格式和excel文件的格式一样,所以此填报表单的格式
A B
1 货主地区 下拉数据集1 (其中B1格对应的变量名为 arg1)
2 货主城市 下拉数据集2 (其中B2格对应的变量名为 arg2)
而且在dingdan_arg.raq中B1关联过滤B2,也就是说,下拉选中B1中的某个地区,那么在B2中则可以下拉选择这个地区中所有的城市。
报表:
在报表dingdan.raq中,设置的数据集的SQL如下: SQL:SELECT 订单.订单ID,订单.订购日期,订单.发货日期,订单.货主名称,订单.货主地区,订单.货主城 市,订单.运货商,订单.运货费 FROM 订单 where (订单.货主地区=? or ? is null) and (订单.货主城市 =? or ? is null) dingdan.raq中的参数为:arg1和arg2,分别对应从dingdan_arg.raq传过来的arg1和arg2.
设置到这里,这张关联过滤报表已经可以运行的,现在是用户想在”货主城市”中可以通过下拉数据集输入多个城市值。如果用字符串组,arg2类型定义成字符串组,在SQL里就要写成”and (订单.货主城市 in (?))”,这样,当”货主城市”不输入值(全不选)的时候,就又什么都查不出来了。
但是此项目中,用户就是想可以同时选择多个城市值,而且又当一个都不选择的时候,又可以把全部城市的信息查出来。
问题解决:
要达到用户的需求,用快逸报表的动态宏可以达到,但有时用动态宏做判断会不方便。所以我们选择对上面的方法稍作调整来实现客户要求:
第一步:参数模板dingdan_arg.raq不变;
第二步:更改报表dingdan.raq中的SQL语句为下所示:
SQL:SELECT 订单.订单ID,订单.订购日期,订单.发货日期,订单.货主名称,订单.货主地区,订单.货主城 市,订单.运货商,订单.运货费 FROM 订单 where (订单.货主地区=? or ? is null) and (订单.货主城市 in (?) or ? is null)
第三步:更改dingdan.raq的参数配置:在语法后面的参数表达式那里增加4个参数:arg1 arg1 arg2 str(arg2),如下图所示

第四步,在菜单:配置->参数 中设置两个参数,arg1和arg2。arg2的数据类型设置为”字符串组”,参数类型为”普通参数”。
这样,发布Web报表后,用户就可以在”货主城市”框里对城市进行单选、多选,或者不选(为空)的操作了。
从而用快逸报表的关联过滤功能,实现了对订单数据在相应”货主地区”下查询一个城市、多个城市和所有城市的订单信息了。
引自:Web报表工具知识库
原文链接:如何在Web填报报表中实现:关联过滤输入同时支持单选,多选和全不选(空填报)
相关文章:报表工具分类-实现技术;修改下拉数据集默认的不选择;输入时的动态关联顾虑;填报-web报表工具必不可少的功能
其他相关内容:用快逸设计WEB报表;专业.net报表工具;探讨报表工具;web报表博客
[...] 相关文章:高效.NET Web报表设计 ; 如何在Web填报报表中实现:关联过滤输入同时支持单选,多选和全不选(空填… ; 通过插入局部报表更方便地做报表 ; [...]
通告 作者: .NET web应用中数据复杂提交的解决办法 | 博计报表↓专注于提升.net报表项目的开发效率 — 2009-05-21 @ 14:19
[...] web应用中数据复杂提交的解决办法 相关文章:高效.NET Web报表设计 ; 如何在Web填报报表中实现:关联过滤输入同时支持单选,多选和全不选(空填… ; 通过插入局部报表更方便地做报表 ; 定制填报提交的”确认”提示框 [...]
通告 作者: .NET web应用中数据复杂提交的解决办法 | 报表工具博客-ibaobiao — 2009-07-13 @ 08:28
[...] web应用中数据复杂提交的解决办法 相关文章:高效.NET Web报表设计 ; 如何在Web填报报表中实现:关联过滤输入同时支持单选,多选和全不选(空填… ; 通过插入局部报表更方便地做报表 ; 定制填报提交的”确认”提示框 [...]
通告 作者: .NET web应用中数据复杂提交的解决办法 | A-web报表 — 2009-07-14 @ 08:37