我正在创建一个Web应用程序,并且运行良好,但是最终用户需要根据其数据创建报告。
在报告页面上,我创建了一些txt框,用户可以在其中键入以进行过滤。这些txt框可能为空,我需要从数据库返回所有内容,或者可以填充某些参数。提醒我需要将txt框内容作为参数传递给JasperServer,它们将在查询中使用。
数据输入的示例是:
txtName= empty (null),
txtCity= 'Belo Horizonte'
它应该生成一份报告,其中包含有关人们在贝洛奥里藏特(Belo Horizonte)的生活状况的所有记录,无论姓名如何。
我用SQL编写而成,并且运行完美。在我尝试在mongo上使用相同的逻辑后,它不起作用。我已经尝试过使用$ lt,$ gt,$ lte,$ gte,$ exist,$ ne和其他聚合工具,但是我无法正确地做到这一点。
SQL:
select * from myfirstreports
where ($P{city} is null or cidade =$P{city})
AND ($P{name} is null or nome =$P{name})
蒙哥:
{
'collectionName' : 'myfirstreports',
'findFields' :
{
'nome': 1, 'numeros': 1, 'vulgo': 1, 'cidade': 1,
'usuResponsavelCadastro': 1, 'created_at': 1
},
findQuery :
{
$and: [
{$or:[{ $P{city}: {$eq: null}}, {'cidade': $P{city}}]},
{ $or:[{$P{name}: {'$eq': null}}, {'nome': $P{name}}]}
]
}
}
答案 0 :(得分:0)
我使用以下表达式:
$P{city}.equals(null)? "{ }" : "{'cidade': '$P!{city}'}"//Need to create a non prompting parameter
$P{name}.equals(null)? "{ }": "{'nome': '$P!{name}'}"
$ P!{...}参数允许我创建一个字符串查询并传递给JasperSoft报告。