2012-08-29 33 views
2

我有一個報告要求,用戶希望有2個多選可選提示。具有多個可選提示的Cognos報告

  • 情景A.如果用戶在兩個提示中選擇了一個或多個值,則應該在 這兩個提示中選擇的值過濾列表。
  • 場景B.如果用戶選擇提示1值(多個),並且沒有在提示2 - 清單應於提示1只
  • 場景C.選擇 值進行濾波如果用戶選擇值(S)在提示2,並沒有在提示1 - 列表應當被過濾掉在提示2只

選擇作爲兩個提示 值是可選的,所述過濾器被保持可選的。

當兩個提示值都被選中時,報告在方案A中正常工作。

但在方案B中,報告顯示來自提示1(這是正確的)選定的值,但提示2中的所有值(這是不正確的,未選擇的值不應顯示)。

在方案C,報告顯示選自提示2(這是正確的)值,但(不應顯示未選擇的,這是不正確。值)所有從提示1中的值。

您能否提供一個解決方案,以便根據上述情況篩選報告?

+0

如果這些值是相互關聯的,即使它沒有被正確選擇,它也會明顯地顯示這些值。 – arunpandiyarajhen

回答

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,PROMPT2值作爲參數

列表B過濾器 - 定義使用提示1作爲參數濾波器並且限定恆定濾波器將排除提示2

列表C的所有值 - 定義使用提示2作爲一個參數濾波器並且限定恆定濾波器,這將排除提示1.

選擇的所有值每個列表,然後使用渲染變量每一個匹配列表:

利斯塔 - 渲染只有當條件變量字符串等於A.

數組listB - 渲染只有當條件變量字符串等於B.

ListC - 僅當條件變量字符串等於C時才渲染。

希望能幫助您解決問題。

+0

您的解決方案是正確的,但我認爲您的方法不是更好的解決方案。使用這些許多容器和查詢會降低性能。 – arunpandiyarajhen