我有两个问题:
1 - 我想指定必须在报告的每个页面中显示的行数。
2 - 如果从数据源获取的行数小于填充页面高度所需的数量,我想用空行填充剩余空间(每行使用其字段边框区分)。例如,如果每页中都显示50行,并且从数据源获取的数据只有20行,然后我想在最后一行打印后打印30行。 考虑到我无法通过更改我的sql select语句来执行此操作。
有人可以帮帮我吗?
答案 0 :(得分:2)
我遇到了类似的问题,这是我解决这个问题的方法。
首先,您需要一个参数(或可能是变量)和总行数,并且您需要包含变量Group_COUNT,“组”将更改反映您的组的名称。
我有一个名为“IDS”的参数,在查询中使用List<Integer>
来获取数据,$P{IDS}.size()
给出了行数。我想你也可以使用包含的变量“REPORT_COUNT”。
然后,最烦人的部分,你需要使细节带足够长,以容纳所有数据(在我的情况下,8行),并在每一行中插入图像(或文本组件)。此组件需要设置2个属性,“空白时删除行”和“表达时打印”,第一个为true,第二个为以下条件:
new Boolean($P{IDS}.size() < 2 && $P{IDS}.size() == $V{Group_COUNT}.intValue())
您必须将$P{IDS}.size()
替换为反映查询行数的表达式,将2替换为行号,假设您至少有1行,则可以跳过#1。从2开始,每行加1,在你的情况下,最多50行! (对不起!)
答案 1 :(得分:2)
我有同样的问题,我的解决方案是获取sql的“空”行(在我的情况下是ORACLE)查询看起来像这样:
Select first_field, second_field, etc..
from my_table WHERE my_condition=${parameter}
UNION ALL
SELECT NULL,NULL, etc..
FROM EXISTING_TABLE_WITH_ROWS WHERE ROWNUM < 40 - (SELECT COUNT(*) FROM my_table WHERE my_condition = ${parameter})
现在创建上面的空行。 如果您没有看到任何更改,请尝试使用“删除空行时删除行”属性设置一个字段或标签 希望这个帮助
答案 2 :(得分:0)
我可以帮助您解决第二个请求:
添加具有此相对位置的TextField
放入“\ n \ n ...”50次。总是打印50行。
更改文字大小
勾选:Strecht溢出时。
问候