如何计算 cognos 中提示值参数的选定值

How to count selected values of a prompt value parameter in cognos

我有一个提示页面和一个带有列表的页面。 用户 select 从提示页面输入值,然后生成报告页面。一个普通的报告。

提示页面有一个包含20个值的多select列表框。

我想做的是: 当用户 select 从列表框中输入最多 3 个值时,如果用户 select 超过 3 个,则在报告中 header 显示带有 ParamDisplayValue('param1') 的值显示 ") items selected" 例如: "5 items selected"

您可以使用 Cognos JavaScript API 将 select 离子计数存储在隐藏的提示中供以后使用。以下是步骤:

  1. 创建新的文本提示
  2. 填写新提示的名称属性(在下面的示例代码中称为'countPrompt')
  3. 填写原提示的名称属性(在示例代码中称为'multiPrompt')
  4. 在页面底部添加 HTML 项目
  5. 添加此列表后面的 JavaScript
  6. 当您 运行 报告时,新提示应该更改以反映原始提示中 select 编辑的项目数。
  7. 一旦您确认它正在工作,您可以隐藏新提示(设置可见:否)

<script>
var report = cognos.Report.getReport('_THIS_');
var multiPrompt = report.prompt.getControlByName('multiPrompt');
var countPrompt = report.prompt.getControlByName('countPrompt');

multiPrompt.setValidator(validateMultiPrompt);

function validateMultiPrompt(values) {
    if (values && values.length > 0) {
        countPrompt.addValues([{'use':values.length}]);
    } else {
        countPrompt.addValues([{'use':'0'}]);
    }
    return true;
}
</script>

在您的报告中,您可以有这样一个报告表达式:

if (ParamDisplayValue('param2') in ('1','2','3')) 
then (ParamDisplayValue('param1'))
else (ParamDisplayValue('param2') + ' items selected')

此表达式假定为多提示分配了 param1,为新的隐藏提示分配了 param2。

为此,必须需要 multi-select 提示。否则,当没有 selected 时,您的项目将显示为“0 项 selected”。这可以通过向项目添加渲染变量来解决,该变量仅在 param1 不丢失或 param2 等于“0”时才渲染项目。

应该像使用以下一样简单:

ParamCount('param')

如果您想在报告中显示它,请使用单例。