【问题标题】:How to count selected values of a prompt value parameter in cognos如何计算 cognos 中提示值参数的选定值
【发布时间】:2015-04-06 11:20:58
【问题描述】:
我有一个提示页面和一个带有列表的页面。
用户从提示页面中选择值,然后生成报告页面。一个普通的报告。
提示页面有一个多选列表框,有 20 个值。
我想做的是:
当用户从列表框中选择最多 3 个值时,在报表标题中显示带有 ParamDisplayValue('param1') 的值,如果用户选择超过 3 个则显示“) 已选择项目”例如:“5 项目已选择”
【问题讨论】:
标签:
business-intelligence
cognos
【解决方案1】:
您可以使用 Cognos JavaScript API 将选择计数存储在隐藏提示中以供以后使用。步骤如下:
- 创建新的文本提示
- 填写新提示的名称属性(在下面的示例代码中称为“countPrompt”)
- 填写原始提示的名称属性(在示例代码中称为“multiPrompt”)
- 在页面底部添加一个 HTML 项
- 添加此列表后面的 JavaScript
- 运行报表时,新提示应更改以反映在原始提示中选择的项目数。
- 一旦您确认它工作正常,您可以隐藏新提示(设置可见:否)
<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。
为此,必须需要多选提示。否则,当没有选择任何内容时,您的项目将显示为“0 个项目已选择”。这可以通过向项目添加一个渲染变量来解决,该变量仅在 param1 不丢失或 param2 等于“0”时渲染项目。
【解决方案2】:
应该像使用以下内容一样简单:
ParamCount('param')
如果您想在报告中显示它,请使用单例。