是否可以在 BIRT 报告中将查询作为参数传递?

Is it possible to pass a query as parameter in BIRT report?

我想要求用户输入查询,然后 BIRT 将根据用户的查询生成报告。

到目前为止,我所做的是将参数传递给 this.queryText,但我想不出 BIRT 将如何显示结果的方法。

这可能吗?


您可以按照以下步骤实现此目的:-

  1. 如果需要,创建报告参数,可由用户传递。
  2. 在 SQL 数据集 beforeOpen() 事件构建和分配动态查询:-
    示例- this.queryText = "Select * from " + params["parmtable"].value;

如果您还有其他需求,请您详细说明。我一定会尽力帮助您制作示例 rptdesign 文件。

这不是直接可能的。

然而,借助外部的一些帮助(例如从数据库中获取游标的 描述 ,可以生成(并保存,如果你愿意的话),最后运行从Java脚本中调用DE API一个rptdesign文件,我已经这样做了,但是很麻烦。另外,如果用户要提供参数怎么办?

从安全的角度来看,不推荐整个方法。

恕我直言,BIRT 不是适合此目的的工具,因为此任务需要更多低级编程。如果您可以自由选择,我建议 Python 与 ReportLab 工具包(生成 PDF 的库)以及 cx_Oracle(取决于您的数据库)或 Java使用 iText 和 JDBC.

除此之外我别无选择

首先。 (我使用 java btw)我的程序接受并执行查询。然后使用 ResultSetMetaData,我得到列名。 (用作参考我的数据源)

然后。我将完整的查询和列列表传递给方法buildReport()(请参考How to Build Dynamic Table (BIRT)示例代码)