如何在Eclipse中使用Java在Jasper Report中通过参数选择表?

时间:2018-09-12 11:55:47

标签: java jasper-reports

我有一个按钮。当我打它。它在数据库中创建一个名称为+ billno + date的表。并将所有详细信息(例如产品名称等)插入数据库。

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

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

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

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

select * from $P{TABLE} 

但是会引发错误。

1 个答案:

答案 0 :(得分:1)

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

SELECT * FROM $P!{TABLE} 

$P!{TABLE}替换为参数的文本值(在这种情况下为表名)。

如果参数用作标准SQL参数,则可以使用

$P{}语法,这意味着可以使用准备好的语句执行查询。例如:

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

那么准备好的语句如下:

SELECT * FROM bill WHERE id = ?

附带说明:为名称+ Billno +日期的每种组合创建单独的表格似乎有些疯狂。想象一下,有一天您将需要对所有这些记录进行搜索-如何在所有这些表上创建SELECT查询?

最好有一个表(例如bill),其中id列为主键,而其他列如namebillnum和{{ 1}},并将该ID作为参数传递给Jasper报告。产品可以存储在相关表date中,并通过bill_item列将它们与bill相关。然后,可以在Jasper报告中bill_id。但是我只是在猜测如何看待您的数据模型。