web 预览时选择参数提交后数据无法查询
定义了数据集 ds1,有两个参数 reportdate 和 caliber,ds1 为脚本数据集,执行了一段查询 sql,reportdate 和 caliber 作为筛选条件,参数模版中分别设置了编辑风格为下拉日历和下拉框,目前问题为 web 预览时,选择好参数后点击提交,无法将参数传进数据集 ds1 中对数据进行筛选,为了验证参数的传递性,在报表中选了一个单元格存放了这两个参数的值,每次提交后,这两个单元格有值,但是从 ds1 中取的数据都无数据;同样试过建立 sql 检索数据集,并建了对应的参数,也是同样的问题,所以感觉问题出在页面参数无法传入数据集中,使用的是最新版的润乾报表,且使用的 demo 项目 preview.jsp
jsp 中做过修改主要代码如下,不知各位大佬有何解决思路:
如果在单元格里写 = 参数名,报表展示时,这个单元格内有值,那证明参数已经传递进来了,同样数据集里也会传入这个参数,这个没什么特殊设置。
既然用的是脚本数据集,可以在脚本数据集里找个格子, 里边写 >output(参数名),点查询时看下控制台信息,看看这块是否有输出。
另外,ds1 无数据,那这两个对应参数值能查出数据来吗? 可以在 sql 里先将条件写成固定的,然后看下是否能查出数据,或者说两个参数,先去掉一个,看看是否是哪个参数影响了,注意下参数类型等
。
感谢回复
1. 控制台是集算器的控制台吗 报了个错。。。
2.ds1 中的 sql 可以确保没问题 正常这两个参数都可以取到值 而且参数不同取出的数据会不一样 另外在脚本数据集中还设置了一个空数据集防止参数查不到数据后能返回一个全是 null 值的空集合 加入参数写死能查到数据
控制台看报表应用的控制台,如果是在报表设计器自带的 demo,那看设计器左侧,有个控制台,看下那里的输出,如果是单独部署了,那看下 tomcat 下的控制台输出,看看那个 output(参数名) 输出的是什么。
另外脚本数据集也发下看看,同时也检查下参数类型,是否是类型不一致导致。
另外还有种可能,数据库是什么?如果是 mysql 库的话,sql 中如果含有中文,可能会造成中文乱码导致查询异常,这个要在 url 上增加字符集编码
脚本数据集因为项目原因不好发出来,使用的 oracle 数据库,如果把参数写死是可以查询导数据的
我在脚本数据集里写了 output,但是发现 web 预览页面并未打印内容,在设计其中预览报表时就能打印出来
那脚本数据集里写个 >output(“1111111111”),看看 web 预览时是否这个也没输出,如果这个输出了而参数那个没输出,那证明参数没有传入到数据集内。
看下现在数据集类型是脚本数据集还是集算器文件数据集?如果是集算器数据集,在数据集设置那 下半部分有个参数设置,那里也要进行对应的设置,不过看你前边现象,应该是脚本数据集。
报表中定义参数时,可以设置个默认参数,那块设置默认参数后,第一次访问报表会用那个默认参数的值吗?
还有,可以换用 showReport.jsp 试下,preview 主要是设计器下快速 web 端预览用,实际项目使用时,不太建议用这个。
解决了 问题出在最终的数据获取环节 我这边集算器脚本是 第一步通过外部参数从数据库获取到一个编号 然后第二步将这个编号传进 httpfile 的 post 请求参数列表中获取 api 数据 这边测试环境数据较少,第一步中无论返回什么值 最终从 api 获取到的数据都一样 所以我在页面上无论换什么日期最终结果都不变 让我一度以为参数没传进去😂 感谢大佬指教👍