2014-02-11 24 views
1

我有2個年份提示。如果我在第一個提示中沒有選擇任何年份,則默認情況下,報告應該在同一年的一月份運行,在第二個提示中選擇。我的提示是值提示並具有字符串值。請幫我實現這個要求。我已經試過#提示宏,?提示?,情況等。我肯定,如果JavaScript會幫助。默認通過選定年份的1月份提示

回答

0

我打算假設您的基礎日期字段不會作爲日期值類型存儲,因爲您正在使用字符串。這可能更容易分成4個提示:從月,從年,到月,到年。

過濾器將被隱含的,如果:

(
(?FROM_YEAR? = '' or ?FROM_MONTH? = '') and 
[database_from_month] = '01' and 
[database_from_year] = ?TO_YEAR? and 
[database_to_month] = ?TO_MONTH? and 
[database_to_year] = ?TO_YEAR? 
) 
OR 
(
(?FROM_YEAR? <> '' or ?FROM_MONTH? <> '') and 
[database_from_month] = ?FROM_MONTH? and 
[database_from_year] = ?FROM_YEAR? and 
[database_to_month] = ?TO_MONTH? and 
[database_to_year] = ?TO_YEAR? 
) 

上面的樣式過濾優越的原因有很多:

  • 更可能是sargeable
  • 易於理解
  • 使用簡單的內置Cognos功能;更可能是跨版本兼容
  • 沒有跨瀏覽器支持,問題你會使用Javascript
  • 代碼段會在其他COGNOS工作室工作得到(業務洞察力等)

你可能已經在過濾器中看到CASE語句會引發錯誤。 CASE語句被傳遞給SQL,而不是通過Cognos編譯成SQL語句。因此它不被視爲正確的語法。

+0

,您的解決方案看起來非常好。但是,由於我們必須保持報表之間的一致性,因此我們必須提供YYYY-MM格式的日期提示(以時間維度的字符串格式)。我仍然會嘗試使用你的代碼來適應我的情況。非常感謝。 – Rashmi

+0

對於FROM和TO可以使用單個提示符,這樣更容易解釋。解析它。如果這有幫助,請接受答案和upvote。 – toddsonofodin

+0

考慮設置一個日曆表,其中年度級別爲'FIRST_DAY_OF_YEAR'字段,月份級別爲'YYYY-MM'字段。 – Damienknight