【问题标题】: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 将选择计数存储在隐藏提示中以供以后使用。步骤如下:

  1. 创建新的文本提示
  2. 填写新提示的名称属性(在下面的示例代码中称为“countPrompt”)
  3. 填写原始提示的名称属性(在示例代码中称为“multiPrompt”)
  4. 在页面底部添加一个 HTML 项
  5. 添加此列表后面的 JavaScript
  6. 运行报表时,新提示应更改以反映在原始提示中选择的项目数。
  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。

为此,必须需要多选提示。否则,当没有选择任何内容时,您的项目将显示为“0 个项目已选择”。这可以通过向项目添加一个渲染变量来解决,该变量仅在 param1 不丢失或 param2 等于“0”时渲染项目。

【讨论】:

    【解决方案2】:

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

    ParamCount('param')
    

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

    【讨论】:

      猜你喜欢
      • 2013-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多