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

时间:2015-04-06 11:20:59

标签: business-intelligence cognos

我有一个提示页面和一个带有列表的页面。 用户从提示页面中选择值,然后生成报告页面。通常的报告。

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

我想做的是: 当用户从列表框中选择最多3个值时,在报告标题中显示带有ParamDisplayValue(' param1')的值,如果用户选择了超过3个显示")选中的项目&#34 ;例如:"选择了5个项目"

2 个答案:

答案 0 :(得分:1)

您可以使用Cognos JavaScript API将选择计数存储在隐藏提示中以供日后使用。以下是步骤:

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

  8. <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项”&#39;。这可以通过向项添加渲染变量来解决,该变量仅在param1未丢失或param2等于&#39; 0&#39;时才渲染项目。

答案 1 :(得分:0)

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

ParamCount('param')

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