我有一个按钮。当我击中它时。它在数据库中创建一个名称+账单+日期的表。并将所有详细信息(如产品名称等(插入数据库。
现在我想在创建新表时,在该 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 查询?
最好有一个表(例如bill
id
列作为主键,其他列(如name
、billnum
和date
并将该 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}
.但我只是猜测您的数据模型如何看起来。