2

我有一个报告要求,用户希望有 2 个多选可选提示。

  • 场景 A. 如果用户在两个提示中都选择了值,则应根据在两个提示中选择的值过滤列表。
  • 场景 B. 如果用户在提示 1 中选择值,而在提示 2 中没有选择 - 列表应仅根据在提示 1 中选择的值进行过滤
  • 场景 C. 如果用户在提示 2 中选择值,而在提示 1 中没有选择 - 列表应仅根据在提示 2 中选择的值进行过滤

由于两个提示都是可选的,因此过滤器保持可选。

Report works fine in scenario A when both prompt values are selected.

但在场景 B 中,报表显示提示 1 中的选定值(这是正确的),但提示 2 中的所有值(这是不正确的。不应显示未选择的值)。

在场景 C 中,报表显示来自提示 2 的选定值(这是正确的),但来自提示 1 的所有值(这是不正确的。不应显示未选择的值)。

您能否提供一个解决方案,以便根据上述情况过滤报告?

4

1 回答 1

1

默认情况下,当提示中未提供答案时,Cognos 不会应用任何过滤器。结果是所有的值。因此,您得到的结果是 Cognos 中的预期行为。

我的建议是使用多个列表和条件字符串变量。因此,首先使用以下表达式定义一个条件变量:

case 
when (ParamDisplayValue('Prompt 1') is not null and ParamDisplayValue('Prompt 2') is not null) then ('A')
when (ParamDisplayValue('Prompt 1') is not null and ParamDisplayValue('Prompt 2') is null) then ('B')
when (ParamDisplayValue('Prompt 1') is null and ParamDisplayValue('Prompt 2') is not null) then ('C')
end

当然,您必须定义三个 3 字符串结果:A、B、C。

列表:创建 3 个列表:

列表 A - 定义使用提示 1、提示 2 值作为参数的过滤器

列表 B - 定义使用提示 1 作为参数的过滤器并定义将排除提示 2 的所有值的常量过滤器

列表 C - 定义使用提示 2 作为参数的过滤器,并定义将排除提示 1 的所有值的常量过滤器。

选择每个列表,然后在每个匹配列表上使用渲染变量:

ListA - 仅当条件变量字符串等于 A 时才呈现。

ListB - 仅当条件变量字符串等于 B 时才呈现。

ListC - 仅当条件变量字符串等于 C 时才呈现。

希望能帮助您解决问题。

于 2012-09-03T19:00:32.863 回答