1

我有 2 年月的提示。如果我没有在第一个提示中选择任何年月,则报告应默认从同年一月开始运行,在第二个提示中选择。我的提示是值提示并且具有字符串值。请帮我实现要求。我已经尝试过#prompt 宏、?prompt?、case when 等。我不确定,如果 javascript 会有所帮助。

4

1 回答 1

0

我将假设您的基础日期字段没有存储为 DATE 值类型,因为您使用的是字符串。这可能更容易分为 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? 
)

上述样式过滤器之所以优越有很多原因:

  • 更有可能成为可分割的
  • 容易理解
  • 使用简单的内置 Cognos 函数;更可能是跨版本兼容的
  • 使用 Javascript 获得的跨浏览器支持没有问题
  • 代码片段适用于其他 Cognos 工作室(Business Insight 等)

您可能已经看到过滤器中的 CASE 语句会引发错误。CASE 语句被传递给 SQL,而不是通过 Cognos 编译成 SQL 语句。因此,它不被视为正确的语法。

于 2014-02-11T13:17:01.620 回答