贾斯珀报告:两个细节部分?

时间:2009-06-23 22:34:18

标签: reporting jasper-reports report-designer

我有一个jasper报告要做,有这样的数据:

Item  | Quantity  | Color
------+-----------+--------
A001  | 1         | Red
A001  | 1         | Green
B002  | 3         | Red
B002  | 3         | Purple

报告按项目/数量分组,例如

Item: A001,  Qty: 1,  Colors: Red,Green
Item: B002,  Qty: 3,  Colors: Red,Purple

现在我已经有了这个Jasper报告已经按照这样的方式进行分组 - 即显示项目和数量的标题,以及下面的颜色列表。

现在的问题是,在这个组的下方,我需要显示一些水平线(对于有人写东西),等于项目的数量。例如在A001组下方我需要显示一行,在B002组下我需要显示三行,如下所示:

Item A001, Qty 1, Colors Red, Green
          _________________________

Item B002, Qty 3, Colors Red, Purple
          _________________________
          _________________________
          _________________________

我尝试过查看jasper脚本,但似乎只能操作报表参数/变量。

有没有人知道我该怎么做?

2 个答案:

答案 0 :(得分:0)

嗯,有趣。

以下是您可以做的事情:

使用此源数据(MySQL):

create table items ( 
item varchar(4), 
quantity number,   
color varchar(10),
);

(插入数据......)

create table numbers (i integer)

(插入数据0,1,2 ...... MySQL 5.1具有可以执行此操作的存储过程,早期版本需要外部脚本来填充它。从0到最大数量)。< / p>

然后,诀窍是制作正确的查询。我想出了这个:

select i.*, n.i from
(
select concat(i.item, ' ', i.quantity) as grouping, i.item, i.quantity,group_concat(distinct color) as colors
from items i 
GROUP BY item, quantity
) i
cross join numbers n 
where quantity > n.i;

E.g。如果我填充我的数字表,并使用您的示例数据填充项目表,然后运行我得到的查询:

+----------+------+----------+------------+------+
| grouping | item | quantity | colors     | i    |
+----------+------+----------+------------+------+
| A001 1   | A001 |        1 | Red,Greem  |    0 |
| B002 3   | B002 |        3 | Red,Purple |    0 |
| A001 1   | A001 |        1 | Red,Greem  |    1 |
| B002 3   | B002 |        3 | Red,Purple |    1 |
| A001 1   | A001 |        1 | Red,Greem  |    2 |
| B002 3   | B002 |        3 | Red,Purple |    2 |
| A001 1   | A001 |        1 | Red,Greem  |    3 |
| B002 3   | B002 |        3 | Red,Purple |    3 |
+----------+------+----------+------------+------+

然后在您的Jasper报告中,诀窍是创建一个在“分组”列中工作的组/乐队,并将您的标题放入其中:

Item A001, Qty 1, Colors Red, Green

然后,在详细信息部分中,只有一行作为细节中的唯一内容。

这样做可以为我生成您想要的报告。

请注意,numbers表有点愚蠢,但它是一种标准的数据仓库技术,但我怀疑某些数据库(例如Oracle)会有聪明的递归过程或其他不需要它的函数。

答案 1 :(得分:0)

好的,最后,这是使用细节页脚部分中的子数据集和交叉表完成的。很好地工作 - 感谢所有贡献的人:)

相关问题