2011-12-21 71 views
2

我不知道这是否可能,但我想知道是否有可能使用iReport Designer创建报表,用户在查看报表时能够控制分组。JasperReports分组可由用户更改

例如,我希望用户能够重新排序分组,并且还可以更改报表分组的级别(仅限于一个字段或多个分组)。

我的意思不是SQL分组顺便说一句,我的意思是,例如通过帐户,然后代理分组:

| Account | Agent | Invoice | Total | 
+----------+---------+----------+-------+ 
| Account1 |   |   |  | 
|   | Joe |   |  | 
|   |   | Invoice2 | $600 | 
|   |   | Invoice1 | $300 | 
| Account2 |   |   |  | 
|   | Sam |   |  | 
|   |   | Invoice4 | $120 | 
|   |   | Invoice7 | $230 | 
|   | Joe |   |  | 
|   |   | Invoice3 | $200 | 
+----------+-- ------+----------+-------+ 

什么我想出来是图,你可以使用的iReport,使这个分组动态?也就是说,用户可能希望先按代理进行分组,然后再按帐户分组,而不是为每个分组分配一个报告,如果有与iReport一起执行此操作的方法,那么该分组会很好。

+0

您可以为此使用[JasperReports API](http://jasperreports.sourceforge.net/api/index.html)或[DynamicJasper API](http://dynamicjasper.com/docs/current/xref/)需要。或者,您可以使用多个模板,例如。 – 2011-12-21 12:23:05

+0

是的,我意识到这些,但希望有一种方法可以将这种数据嵌入到您可以导入JasperReports服务器的报告中。我开始怀疑它不是。 – mludd 2011-12-21 12:28:06

+0

您可以尝试使用'groupExpression'中的参数。示例:'<![CDATA [$ P {groupByParam}]]>'。我认为支持这样的报告将非常困难。 – 2011-12-21 12:44:56

回答

1

是的,应该可以创建类似的报告。但根据您的确切需求,它可能不实际(如Alex K所示)。

如果您只考虑您在帐户上的分组示例,那么代理或分组在代理上的帐户就会很简单。有一个让用户指定此选项的参数。这可能是一个下拉列表。然后在报告中你会喜欢这个字段:

今天的版本:$F{Account}$F{Agent}

动态版:$P{AcctFirst} ? $F{Account} : $F{Agent}$P{AcctFirst} ? $F{Agent} : $F{Account}

同样,组定义需要包括新的AcctFirst PARAM。

但它不会很好地延伸。如果这两个字段是不同的数据类型呢?如果您想让用户从3个或4个或N个字段中进行选择,该怎么办?每一个都是可以解决的......但报告成指数地变得更加复杂。

顺便说一下,这是比较常见的要求。你会看到像这样的功能进入JasperReports。但现在这是一个艰难的。