【问题标题】:Concur / Cognos Report Studio: Filter with options for timeframe always using timepropmt values?Concur / Cognos Report Studio:始终使用 timepropmt 值过滤时间范围选项?
【发布时间】:2019-05-09 09:25:57
【问题描述】:

我正在使用 Concurs IBM Cognos 集成解决方案。我正在使用的数据是差旅费用报告数据。我对这个报告的目标是有一个提示页面,允许用户选择报告应该从中提取数据的时间范围。 由于此报告也可能计划定期运行,因此它不仅应包括日期范围提示(或在本例中为两个日期提示),还应包括相对时间范围的选项,如“去年”、“过去 6 个月”和“年初至今”。

到目前为止,我已经使用两个日期提示(“TravelDateIntervallStart”和“TravelDateIntervallEnd”)和两个值提示设置了一个提示页面。但是,这些值提示中只有一个与时间范围选项相关。 这个想法是为用户提供日期提示,以便在特定时间范围内运行临时报告。 除了使用日期提示的“SelectTimeFrame”选项之外,值提示(“RelativeTimePrompt”)应提供使用相对时间范围的选项,具体取决于报告计划运行的时间。我已经在值提示中相应地设置了选项并构建了一个过滤器,如下所示:

CASE ?RelativeTimePrompt? 

WHEN 'SelectTimeframe' THEN

([Arrival Date/Time] between ?TravelDateIntervallStart? and ?TravelDateIntervallEnd?
AND
[Departure Date/Time] between ?TravelDateIntervallStart? and ?TravelDateIntervallEnd?)

WHEN 'Last12m' THEN ([Arrival Date/Time] >= _add_years (current_date, -1) AND [Departure Date/Time] >= _add_years (current_date, -1))

WHEN 'Last6m' THEN ([Arrival Date/Time] >= _add_months (current_date, -6) AND [Departure Date/Time] >= _add_months (current_date, -6))

WHEN 'Year2Date' THEN (_year([Arrival Date/Time]) = _year (current_date) AND _year([Departure Date/Time]) = _year (current_date))

END

当在值提示中选择“Year to date”(“Year2Date”)时,会抛出错误:

“RQP-DEF-0177 执行操作“sqlPrepareWithOptions”状态=“-126”时出错。 CAF-WRN-2082 发生错误。请联系您的管理员。 CAF 已使用 SecureErrorID 记录了完整的错误:“[某些日期和数字]

我用谷歌搜索了错误,但找不到任何适用于我的情况。是否有任何明显的东西可能导致“年初至今”过滤器出错?

【问题讨论】:

  • 该错误基本上意味着您需要查看后端日志才能找到真正的错误。我猜您无权访问后端日志。你需要做的只是一点一点地建立这个表达式来解决这个问题。不要对整个事情进行编码并期望它能够工作。最后你可能需要使用令牌提示来生成你需要的过滤器
  • 你说得对,我无权访问后端日志。感谢您一点一点地构建表达式的提示 - 年初至今的部分确实是罪魁祸首,更具体地说,是从到达或离开日期/时间字段中获取年份的函数。 "_year([Arrival Date/Time])" 或 "year([Arrival Date/Time])" 和 "extract(year, [Arrival Date/Time])" 一旦使用就会出错在过滤器中。我不知道为什么。
  • 我认为'year'函数不像其他一些函数那样以下划线开头。尝试删除下划线。
  • 是的 - 您再次需要进一步分解它,通过尝试将表达式作为列并查看它们返回的内容来学习正确的语法。

标签: cognos cognos-10 cognos-bi


【解决方案1】:

在新报告中,引入日期字段并将过滤器表达式从案例中取出。所以只需_year([Arrival Date/Time]) = _year (current_date) AND _year([Departure Date/Time]) = _year (current_date) 看看是否仍然失败。

如果是这样,您可以尝试将其更改为:

extract(year,[Arrival Date/Time]) = extract(year, current_date) AND extract(year,[Departure Date/Time]) = extract(year,current_date)

extract(year,[Arrival Date/Time]) = #
timeStampMask($current_timestamp,'YYYY')
# AND extract(year,[Departure Date/Time]) = #
timeStampMask($current_timestamp,'YYYY')
#

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多