如何计算 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 离子计数存储在隐藏的提示中供以后使用。以下是步骤:
- 创建新的文本提示
- 填写新提示的名称属性(在下面的示例代码中称为'countPrompt')
- 填写原提示的名称属性(在示例代码中称为'multiPrompt')
- 在页面底部添加 HTML 项目
- 添加此列表后面的 JavaScript
- 当您 运行 报告时,新提示应该更改以反映原始提示中 select 编辑的项目数。
- 一旦您确认它正在工作,您可以隐藏新提示(设置可见:否)
<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')
如果您想在报告中显示它,请使用单例。
我有一个提示页面和一个带有列表的页面。 用户 select 从提示页面输入值,然后生成报告页面。一个普通的报告。
提示页面有一个包含20个值的多select列表框。
我想做的是: 当用户 select 从列表框中输入最多 3 个值时,如果用户 select 超过 3 个,则在报告中 header 显示带有 ParamDisplayValue('param1') 的值显示 ") items selected" 例如: "5 items selected"
您可以使用 Cognos JavaScript API 将 select 离子计数存储在隐藏的提示中供以后使用。以下是步骤:
- 创建新的文本提示
- 填写新提示的名称属性(在下面的示例代码中称为'countPrompt')
- 填写原提示的名称属性(在示例代码中称为'multiPrompt')
- 在页面底部添加 HTML 项目
- 添加此列表后面的 JavaScript
- 当您 运行 报告时,新提示应该更改以反映原始提示中 select 编辑的项目数。
- 一旦您确认它正在工作,您可以隐藏新提示(设置可见:否)
<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')
如果您想在报告中显示它,请使用单例。