我在Jaspersoft Studio中设置了一个Label,它引用了CSV格式的数据适配器文件。 csv文件包含数千条记录。我希望最终用户能够选择或键入输入"命令no"用于打印的特定记录。如果输入一个订单号 - 找到并打印记录。如果输入了10个订单 - 将打印10条记录。
谢谢。
答案 0 :(得分:0)
您可以使用参数让用户进行输入。但由于CSV不是查询语言,因此可以在数据源中使用字段表达式
以下是添加参数
的方法https://community.jaspersoft.com/wiki/using-report-parameters
这就是如何使用Field Expression
https://community.jaspersoft.com/wiki/how-apply-parameters-csv-data-source
明细: 按属性过滤:
在查询对话框中,选择“过滤表达式”选项卡,并使用此代码
填写该字段$F{order_no}.equals($P{order_no})
此代码将过滤 order_no字段等于 order_no参数
的csv行按多个order_no过滤:
JasperReport允许用户在Java或Groovy中进行一些脚本编写(取决于他们的设置)。因此,您可以执行更复杂的任务,例如将输入拆分为数组并使用它来搜索行。
我想到的是,要求最终用户按空格分隔order_no并使用此脚本过滤数据。
Arrays.asList($P{order_no}.split(" ")).indexOf($F{order_no}) > -1
我还没有测试过这段代码,但希望你能得到这个想法。 (试用脚本)。