读书人

jasperserver 分组排序生成报表(300酬

发布时间: 2012-05-16 23:40:10 作者: rapoo

jasperserver 分组排序生成报表(300酬谢)!
有这样一个要求,报表是需要分组以及排序的,而且分组是n个,排序也是n个。

比如说一个学校班级报表。有2个字段来分组,3个字段排序,2,3这个数字是变化的。由前台传入。

我要显示的数据内容字段是:姓名(升序显示),性别(升序显示),出生日期(降序显示);我按照年纪,班级分组显示数据内容。
姓名 性别 出生日期
nianji:1年纪
class1:1班
张三 男 1980/09/23
张表 男 1981/09/23
张红 男 1982/09/23
李表 男 1983/09/23
苗表 男 1983/11/23
class1:1班
nianji:1年纪
nianji:1年纪
class1:1班
张22 男 1980/07/23
张23 男 1981/07/23
张24 男 1982/07/23
李25 男 1983/07/23
苗26 男 1983/11/23
class1:1班
nianji:1年纪
nianji:1年纪
class1:1班
张33 男 1980/08/23
张34 男 1981/08/23
张35 男 1982/08/23
李36 男 1983/08/23
苗37 男 1983/09/23
class1:1班
nianji:1年纪
nianji:1年纪
class1:1班
张41 男 1979/09/23
张42 男 1981/09/23
张43 男 1982/09/23
李44 男 1983/09/23
苗45 男 1983/11/23
class1:1班
nianji:1年纪

这是我的工作任务,对于jasperserver生成报表,我会普通的,我有模板 ,但是在ireport下面我能生成一个分组的模板,不能生成多个分组的模板,也不能生成排序的模板。我们需要分组排序一起做的。我知道有现成的比如润乾报表,快速排序等。但是那是需要收费的,我们老板不要,让我们自己做一个。

我现在的思路了是,先生成模板.jrxml,然后再用jasperserver生成.jasper,再生成.pdf,.html,.doc报表。(这个架构方向是钉死啦),我现在的问题是:
1,分组排序一起来的模板jrxml。
2,还有怎么往里面添加分组排序的sql语句。
有了模板jrxml文件,以及添加sql语句的jrxml我就可以生成分组排序的报表啦!

谢谢大家 ,这个事情我要在周一晚上之前搞定。
先散200,之后再追加100分。




[解决办法]
没看懂啊,是不是先按年级分组,然后按班级分组?

[解决办法]
我先了解下需求
1.你是要用java同态生成jrxml吗?
2.你用ireport是否可以实现各种打印要求。
[解决办法]
多重分组的还没试验过,不过应该类似吧,

select name,birthday,class ,nianji from T where ** group by nianji, class order by nianji, class, birthday
这个没运行,我会先写这样的,然后调

你分两个组,一个是按niaji,一个按 class来
[解决办法]
另:
排序要先排好
分组的事情交给jasper
[解决办法]
会写SQL语句了,那个在Ireport不是可以选择分组么?
[解决办法]
关注一下
[解决办法]
似乎不是一步就能搞定的
------解决方案--------------------


你怎么分的请尝试

$F{班级}+$F{学生}

因为我没太懂你的需求但是你可以通过拼串行为实现多分组
[解决办法]
分组可以有多个,加外,你可以考虑用 subreport,就是每个班的内容为一个subreport,将classid传给subreport
[解决办法]
你在subreport中对这些字段进行排序
[解决办法]
你从数据库里面查出来的时候排好序了吗,jasper 只遍历一次。
[解决办法]
大类下边有小类:
大类一:
小类一:
商品一信息
商品二信息
小类二:
商品三信息
商品四信息
大类二:
小类三:
商品五信息
商品六信息
小类四:
商品七信息
商品八信息

我用Ireport可以做成这样的.就是两个分组.

下边是报表查询
select a.aid_no,a_status = Case a.assets_status when '1' then '使用中' when '2' then '维修中' when '3' then '已报损' when '4' then '报废再使用' when '5' then '未使用' end,
assets_type = Case a.ai_type when '1' then '主资产' when '2' then '附资产' end,
a.bar_code,a.CAT_NAME ,a.TCAT_NAME ,a.cat_desc,a.cat_mfg ,a.assets_b_cost,b.DEPT_NAME ,c.STAFF_NAME,a.begin_date
from T_ASSETSInDETAIL a, T_ASSETSInHEAD b ,T_STAFF c
where a.AI_NO=b.AI_NO and c.STAFF_NO=b.APP_USER and b.no_status='2' and a.is_out='N'
and a.ai_type like $P{ASSETSTYPE}
and c.staff_no like $P{STAFFNO}
and b.ai_date >= $P{STARTDATE} and b.ai_date <=$P{ENDDATE} AND B.COMPANY_CODE =$P{COMP}
and b.dept_code like $P{STAFFDEPT}
and a.tcat_code like $P{TCATCODE}
order by a.cat_code,a.tcat_code,a.bar_code


在预览-->报表群组-->new 选择一个字段$F{assets_type}.然后再new,再选择$F{TCAT_NAME}

[解决办法]
不如把你的jrxml传到你的资源里面让大家看下了,其实我个人认为这个通过在sql中合理排序可以解决。
[解决办法]
关注
[解决办法]
尽所能吧
[解决办法]
老兄你怎么没格式化呢

<group name="group" ><groupExpression><![CDATA[$F{A0}]]></groupExpression>

$F{A0}是什么?我在前面说的意思是

<group name="group" ><groupExpression><![CDATA[$F{年纪}+"__"+$F{班级}]]></groupExpression>

你站在report的角度思考下。让它按特定字符串分组,这个特定字符串是你按业务拼出来的,你也可以利用一个变量在外界拼。

[解决办法]
感觉和我的差不多嘛.只是你的有统计的.
大类-->年级
小类-->班极

把你表结构放出来看看吧.叫大家帮你写个SQL语句,然后再放到ireport里去.

[解决办法]
如果太复杂,我想你还是考虑 子报表吧。

subReport
[解决办法]
关注一下
[解决办法]
我们以前就是这样做的
给你思路:
1.把你要按什么分组的sql写好,该SQL语句就是要得到分组的字段(做为每组的头);
这个传进去后,相当于list.自然有多少组 就会显示你想要的.每组里面具体内容就是第二
步要做的了.
2.把你分组统计的写成另一个SQL

不知道LZ明白了没?

[解决办法]

探讨

明白你的意思,可是没有模板,做不了,我现在是再ireport里面做一个模板,一切都搞定啦,就差分组统计的数据没…

[解决办法]
关注下,好久没用Ireport了 应该设置就可以了
[解决办法]
探讨
现在就差一个分组统计啦

[解决办法]
这个跟统计一个应该是差不多吧.多几个count函数


[解决办法]
关注!!!
[解决办法]
jasper中的变量就可以实现计算 按组按行计算,计算方式由你自己实现,你打开变量对话框看下,过了一天也没人提这个啊。
[解决办法]
关注,up
[解决办法]
1.把你要按什么分组的sql写好,该SQL语句就是要得到分组的字段(做为每组的头);
这个传进去后,相当于list.自然有多少组 就会显示你想要的.每组里面具体内容就是第二
步要做的了.
2.把你分组统计的写成另一个SQL
[解决办法]
学习了

读书人网 >J2SE开发

热点推荐