数据集查询语句这样写的 select * from T1 where ID in (?)
数据集参数是ID——值绑定到报表参数:ID
报表是这样设计的: 一个grid里,几个单元格里分别放 dataSetRow["NAME"] 这样的数据。
我传给报表的参数(ID)是"01,02,03,04"
这样的话,预览它会显示为空。
如果只传一个参"01"的话,预览它会正常显示grid中的数据——ID为01的那条记录的数据
请问能不能实现这样的效果,让报表预览时,会看到分别ID为01,02,03,04 的记录的数据的4个GRID,并且分4页显示。
谢谢!
问题补充:
数据集查询语句这样写的 select * from T1 where ID in (?)
数据集参数是ID——值绑定到报表参数:ID
报表是这样设计的: 一个grid里,几个单元格里分别放 dataSetRow["NAME"] 这样的数据。
我传给报表的参数(ID)是"01,02,03,04"
这样的话,预览它会显示为空。
如果只传一个参"01"的话,预览它会正常显示grid中的数据——ID为01的那条记录的数据
请问能不能实现这样的效果,让报表预览时,会看到分别ID为01,02,03,04 的记录的数据的4个GRID,并且分4页显示。
谢谢!
以下是问题补充:
谢谢大家的关注。
2楼能不能说详细些呢?谢谢
问题补充:
数据集查询语句这样写的 select * from T1 where ID in (?)
数据集参数是ID——值绑定到报表参数:ID
报表是这样设计的: 一个grid里,几个单元格里分别放 dataSetRow["NAME"] 这样的数据。
我传给报表的参数(ID)是"01,02,03,04"
这样的话,预览它会显示为空。
如果只传一个参"01"的话,预览它会正常显示grid中的数据——ID为01的那条记录的数据
请问能不能实现这样的效果,让报表预览时,会看到分别ID为01,02,03,04 的记录的数据的4个GRID,并且分4页显示。
谢谢!
我现在新建了个List 把那个Grid放到Detail里,但是预览显示为空
后来又试了Table 把Grid放到Detal Rows里,依然不起作用
传的参数 也试了 '01','02','03','04'的形式,还是不起作用
问题补充:
我已经解决这个问题了!
方法如下:
删掉数据集中,查询语句中的where子句,然后删掉数据集参数
我们不用 问号 (where id in(?)) 这种方式了
改用 筛选器的方式:
在结果集中 新建一个筛选器,选自相应的字段id, 选择in,选择报表参数id
然后保存预览,输入参数 01,02,03,04 (带不带单引号都行)
锵~~
效果实现啦! 显示4页,每页显示相应的GRID及其中的数据
感谢大家的关注!
关键字:birt 分页 套打 数组参数
问题补充:
我再补充一下
不知为什么,今天再用时,又出不来了。
如果把报表参数类型改为列表框(必需,多选,动态值取自不带过滤器的数据集),才能实现,但是只能鼠标点选参数,无法传字符串参数。。。
所以不再使用上面的方法了。
又发现新的方法了
不用筛选器也不用数据集参数。改用数据集脚本
选择 afteropen事件,脚本如下
var ids = params["id"];
this.queryText="selete id,name from t1 where id in("+ids+")"
保存,预览,输入形如'01','02','03' (一定要加引号)的参数
锵!~
实现预期效果!
结贴子
不知道你用的报表是不是动态的.如果是动态的,有可能会支持这样子的语法
dataSetRow[1]["NAME"]
先确定你的SQL有没问题,好象in是像楼上所说的使用in ('01','02').
先把你的SQL写在管理器上,确定能执行
我认为你的问题应该就是数据没有查询出来
[code="java"]
我传给报表的参数(ID)是"01,02,03,04"
你应该传 ('01','02','03','04')
in 的写法是 where id in ('01','02','03','04')
而不是("01,02,03,04")
[/code]
在detail row里面, 选择属性page break, 选择after的always选项
这个属性是控制在报表item之后翻页的
你SQL打印出来在控制台上运行,看会不会查询的到数据
用?当然会防止注入了攻机了
的所以 "'a','b'"这种写法也是没用的.
多加几个问号吧
在传参时
如果个数不够补0完成
一直困扰的问题 终于在这里解决了,谢谢了!
楼主,应该是先选中 数据集 再选中脚本
然后选 beforeOpen 才可以吧!