Filter 带有多个可选提示的Cognos报告

Filter 带有多个可选提示的Cognos报告,filter,prompt,cognos,Filter,Prompt,Cognos,我有一个报告要求,用户希望有2个多选可选提示 场景A.如果用户在两个提示中都选择了值,则应根据在中选择的值筛选列表 两个提示都有 场景B.如果用户在提示1中选择了值,而在提示2中选择了无值,则应在 仅在提示1中选择的值 场景C.如果用户在提示2中选择了值,而在提示1中选择了无值,则应在 仅在提示2中选择的值 由于这两个提示都是可选的,因此过滤器保持为可选 当两个提示值都被选中时,报表在场景A中工作正常 但在场景B中,报告显示从提示符1中选择的值(这是正确的),但显示从提示符2中选择的所有值(

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

  • 场景A.如果用户在两个提示中都选择了值,则应根据在中选择的值筛选列表 两个提示都有
  • 场景B.如果用户在提示1中选择了值,而在提示2中选择了无值,则应在 仅在提示1中选择的值
  • 场景C.如果用户在提示2中选择了值,而在提示1中选择了无值,则应在 仅在提示2中选择的值
由于这两个提示都是可选的,因此过滤器保持为可选

当两个提示值都被选中时,报表在场景A中工作正常

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

在场景C中,报告显示从提示符2选择的值(这是正确的),但显示从提示符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-定义使用prompt 1、prompt2值作为参数的筛选器

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

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

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

ListA-仅当条件变量字符串等于A时渲染

ListB-仅当条件变量字符串等于B时渲染

ListC-仅当条件变量字符串等于C时才渲染


希望这有助于您解决问题。

如果值是相互关联的,则即使未正确选择,也会明显显示值?根据您所述的要求,方案B和方案C工作正常。例如,在场景B中,提示2被忽略(未使用),因此您将看到通过使用提示1进行筛选返回的所有值。请澄清您的要求。如果您发布您尝试过的筛选表达式,也会很有帮助。您的解决方案是正确的,但我认为您的方法不是更好的解决方案。使用这么多的容器和查询会降低性能。