首页 > 解决方案 > BIRT - 为选定的参数值呈现 displayText 属性

问题描述

我有一个报告,我需要在标题中显示一个参数。

该参数是一个允许多选的动态列表框。

使用以下表达式在我的报告标题中放置一个动态文本框会导致在实际不为空时输出“null”:

params["parameterName"].displayText

使用以下代码产生数字输出(如预期的那样)

params["parameterName"].value

如何显示在运行时进行的参数选择的实际关联文本?

标签: javaparametersbirt

解决方案


我试图用该reportContext.getParameterDisplayText()功能解决类似的问题,但发现很难使用它。

如果您仍然想用这种方法解决您的问题,您可以从这里开始:https ://www.eclipse.org/forums/index.php/t/159083/

我为我的要求开发了以下解决方法:

1)首先你需要两个数据集。一个用于实际参数,第二个提供用于显示选择的数据:

参数数据集查询:

select 'A' AS name,
        1 AS id 

UNION ALL

select 'B' AS name,
        2 AS id 

UNION ALL

select 'C' AS name,
        3 AS id 

显示数据集查询:

SELECT GROUP_CONCAT(DISTINCT paramTbl.name ORDER BY paramTbl.id  SEPARATOR ', ') AS 'displayText' 
FROM
(select 'A' AS name,
        1 AS id 

UNION ALL

select 'B' AS name,
        2 AS id 

UNION ALL

select 'C' AS name,
        3 AS id
) AS paramTbl

WHERE paramTbl.id IN('xxx')

2)然后在第二个DataSet的beforeOpen事件中使用一个脚本,将查询的where中的'xxx'字符串替换为参数选择的值:

this.queryText = this.queryText.replace("xxx", params["Parameter"].value.join("','" ));

在打开脚本之前

3)现在可以在报表中添加一个数据元素,为第二个数据集添加绑定,并输出包含GROUP_CONCAT连接的参数的显示值的一列 数据绑定

参数选择的输出最后是这样的: 参数选择 参数显示文本


推荐阅读