【问题标题】:jasper reports loading report from jasperjasper 报告从 jasper 加载报告
【发布时间】:2015-04-21 11:27:49
【问题描述】:

我正在从 .jasper 文件加载 jasper 报告文件以提高性能,如下所示。

JasperReport rpt = (JasperReport)JRLoader.loadObjectFromFile(location);

但我现在有一个要求,即必须将动态形成的查询设置为 .jasper(已编译)文件。有没有办法做同样的事情?

【问题讨论】:

标签: java jasper-reports


【解决方案1】:

这样的?

Java

JasperReport rpt = (JasperReport)JRLoader.loadObject(Your .jasper file path);

Map paramMap = new HashMap();
paramMap.put("p_sql", "select * from baztable where foo='bar' and fuga='hoge' order by username");
// pass the dynamic query to .jasper file.
JasperPrint print = JasperFillManager.fillReport(rpt, paramMap, connection);

jrxml

<parameter name="p_sql" class="java.lang.String" isForPrompting="false">
    <defaultValueExpression><![CDATA["select * from baztable order by username"]]></defaultValueExpression>
</parameter>
<queryString>
    <![CDATA[$P!{p_sql}]]>
</queryString>

【讨论】:

    【解决方案2】:

    您可以使用 $P! (带感叹号的参数)可用于条件查询。 使用它,您可以根据特定条件制作动态查询。 可以找到相同的指南here.

    【讨论】:

      【解决方案3】:

      只需在 ireport 中打开 .jasper 文件,您就可以加载 .jasper 文件并对其进行编辑。

      【讨论】:

        【解决方案4】:

        这是 JRXML 文件的 hack 方法。 JRXML 文件包含您的查询。您可以在此处编写 Java 代码或任何其他代码来替换/写下您的查询:

        MongoDB 查询示例:

        <queryString language="MongoDbQuery">
            {'collectionName':'customer'}
        </queryString>`
        

        【讨论】:

          最近更新 更多