如何在 eclipse 中使用 java 在 jasper 报告中按参数选择表?



我有一个按钮。当我击中它时。它在数据库中创建一个名称+账单+日期的表。并将所有详细信息(如产品名称等(插入数据库。

现在我想在创建新表时,在该 jasper 报告获取新创建的表并将其显示在 jasper 报告的表中。

为此,我创建了一个参数。

Hashmap param = new Hashmap();
param.put("TABLE" , name+bill+date);

之后,我在 jasper 报告中创建了一个表并尝试执行此查询。

select * from $P{TABLE} 

但它抛出了一个错误。

您必须使用$P!{}语法更正查询(请注意P{之间的!字符(:

SELECT * FROM $P!{TABLE} 

其中$P!{TABLE}替换为参数的文本值(在本例中为表名(。

$P{}

语法可用于参数用作标准 SQL 参数的情况,这意味着可以使用预准备语句执行查询。例如:

SELECT * FROM bill WHERE id = $P{ID}

准备好的语句在哪里:

SELECT * FROM bill WHERE id = ?

旁注:名称 + 账单 + 日期的每个组合创建单独的表看起来有点疯狂。想象一下,有一天您将需要通过所有这些记录实现搜索 - 您将如何对所有这些表创建 SELECT 查询?

最好有一个表(例如billid列作为主键,其他列(如namebillnumdate并将该 id 作为参数传递到 Jasper 报告中。产品可以存储在相关表bill_item中,并按列将它们与bill相关联bill_id。然后在 Jasper 报告中,您可以SELECT * FROM bill b LEFT JOIN bill_item i ON i.bill_id = b.id WHERE b.id = $P{ID}.但我只是猜测您的数据模型如何看起来。

最新更新