Cognos:在条件变量表达式中使用DataItem值

时间:2010-02-18 06:52:34

标签: report cognos

我有一个列'YEAR'的列表。我希望最近一年(2010年)在'YEAR'栏中显得大胆。我试过这个表达

IF ( [myQuery].[YEAR] = [myQuery].[RECENT_YEAR]) THEN ( "RecentYearBold" )

其中[RECENT_YEAR]是一个带有表达式maximum([YEAR])

的DataItem

这会抛出一个错误,它不允许我在条件变量表达式中使用DataItem。有人可以帮忙吗?

我得到错误:

  

RSV-VAL-0002无效的表达式IF([myQuery]。[YEAR] = [myQuery]。[RECENT_YEAR])那么       (“RecentYearBold”)。 CRX-API-0005位置'34'处或附近出错。名为“[myQuery]。[RECENT_YEAR]”的变量无效。

2 个答案:

答案 0 :(得分:3)

问题是Cognos 8剥离了报表对象未使用的查询中的变量(在您的情况下是List对象)。如果您希望它们可用,则需要将查询项添加到报表对象的数据属性中。请注意,您可以将项目添加到列表中(但是您必须隐藏它,这很难看)。最好指示Cognos将查询项包含在报表对象中,以避免不必要的噱头。

此链接更详细地解释了问题和解决方案:http://www-01.ibm.com/support/docview.wss?uid=swg21339433

答案 1 :(得分:1)

通过采用以下方法,我能够完成您正在尝试的内容(在遇到相同的错误之后):

  1. 我创建了[recent_year]列,如下所示: maximum ([cognos_test].[year] for report)。 (如果需要,您可以使用不同的范围。)
  2. 在Conditon Explorer中创建了一个名为recent year的布尔变量,其中包含以下表达式:[Query1].[year] = [Query1].[recent_year]
  3. 我将年份列添加到列表中,设置样式变量= recent year并在recent year = true
  4. 时将条件粗体格式应用于年份列
  5. 此时,当我执行报告时,我收到了您所犯的相同错误。验证报告提供了更多信息,表明[Query1].[recent_year]字段也需要在列表中。当我将它添加到列表中时,条件格式化工作。 (真的不确定为什么会这样,但我接受了它。)
  6. 要隐藏[recent_year]列(同时仍将其留在列表中),您可以将recent_year列的“List Column Body”和“List Column Title”对象的“Box Type”属性设置为“无”。
相关问题