我有一个包含几个输入控件的报告,这些输入控件用于填充另一个输入控件。
我的输入控件:
- GPI - 具有产品代码的多选输入控件。参数是一个集合。
- NAME_LOOKUP - 一个单值文本框,用户可以在其中键入产品名称。参数是一个字符串。
- NDC - 根据GPI和NAME_LOOKUP中输入的内容获取值的药品代码列表。
填充NDC的查询具有以下WHERE子句:
WHERE (
REGEXP_LIKE(DESCRIPTION, $P{name_lookup}, 'i')
OR REGEXP_LIKE(NDC, $P{name_lookup}, 'i')
)
OR ($X{IN, GPI, gpi})
它按照$X
语法设计的方式工作——如果用户没有从列表中选择GPI值,我的NDC输入控件会显示所有药物代码。但是,我只想在实际从GPI输入控件中选择一个值时显示药物代码。
当我尝试
WHERE (
REGEXP_LIKE(DESCRIPTION, $P{name_lookup}, 'i')
OR REGEXP_LIKE(NDC, $P{name_lookup}, 'i')
)
OR ($X{IN, GPI, gpi} AND $P{gpi} IS NOT NULL)
我在JasperReports 服务器中为NDC输入控件获取了无效的列类型。
当我尝试
WHERE (
REGEXP_LIKE(DESCRIPTION, $P{name_lookup}, 'i')
OR REGEXP_LIKE(NDC, $P{name_lookup}, 'i')
)
OR ($X{IN, GPI, gpi} AND $P!{gpi} IS NOT NULL)
我收到一个缺少的表达式错误。
我可以做些什么来将NDC输入控件的结果限制为仅选定的GPI,而不是所有结果?