2015-04-06 83 views
2

我有一个提示页面和一个带有列表的页面。 用户从提示页面中选择值,然后生成报告页面。通常的报道。如何计算Cognos中提示值参数的选定值

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

我想要做的是: 当用户从列表框中选择最多3个值时,如果用户选择多于3个显示,则报告标题将显示带有ParamDisplayValue('param1')的值。已选择的项目“例如:”已选择5个项目“

+0

哪个版本的Cognos BI?对报告的提示页面接口进行了各种更改,包括新版本中的稳定(ish)API:http://www-01.ibm.com/support/knowledgecenter/SSEP7J_10.2.1/com.ibm。 swg.ba.cognos.ig_smples.10.2.1.doc/c_rs_smples_prompt_api.html?lang = en – chsh 2015-04-06 13:46:44

+0

我的版本是10.2.1 – 2015-04-06 14:05:18

回答

1

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

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

该表达式假定为多提示分配了参数1,并为新的隐藏提示分配了参数2。

要使其工作,必须要求多重选择提示。否则,当没有选择任何东西时,您的物品会读取'0个物品被选中'。这可以通过将渲染变量添加到仅在param1未丢失或param2等于'0'时渲染该项目的项目来解决。

+0

完美!谢谢! – 2015-04-07 07:23:48

相关问题