2010-02-18 30 views
1

我有一个包含'YEAR'列的列表。我想让最近的一年(2010年)在“年份”专栏中大胆显示。我尝试这个表达式Cognos:在条件变量表达式中使用DataItem值

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

其中[RECENT_YEAR]是用表达maximum([YEAR])

这将引发我一个错误,它不允许我使用的DataItem在条件变量表达DataItem的。任何人都可以帮忙吗?

错误我得到:

RSV-VAL-0002无效表达IF([更改为MyQuery] [YEAR] = [更改为MyQuery] [RECENT_YEAR])THEN ( “RecentYearBold”)。 CRX-API-0005位置“34”或附近的错误。名为'[myQuery]。[RECENT_YEAR]'的变量无效。

回答

1

我能够完成你想什么通过采取以下办法(让你做了同样的错误之后):

  1. 我创建了[recent_year]列如下所示: maximum ([cognos_test].[year] for report) 。 (你可以使用不同的范围,如果需要的话)
  2. 创建一个布尔变量在Conditon浏览器称为recent year以下表达式:[Query1].[year] = [Query1].[recent_year]
  3. 我加入了今年的列到列表中,设置样式变量= recent year和应用当条件加粗格式化为年份列时recent year = true
  4. 此时,当我执行报告时,我收到了同样的错误。验证报告提供了更多信息,这表明[Query1].[recent_year]字段也需要在列表中。当我将它添加到列表中时,条件格式化工作。 (真的不知道为什么会出现这种情况,但我随它去了。)
  5. 要隐藏[recent_year]列(同时仍将其留在列表中),可以为“List Column Body”设置“Box Type”属性并将recent_year列的“列列标题”对象设置为“无”。
+0

首先感谢您的回复中......怎么我在等待一个星期。是的,正如你所说的,我不应该低估'验证'选项......谢谢亚尔。非常感谢... – Amsakanna 2010-02-27 10:31:24

+0

是否为您提供最大关键字工作?我希望整个recent_year列仅包含“2010”。任何帮助? – Amsakanna 2010-03-10 11:01:08

+0

您的帖子显示您想要突出显示包含“近年”的行,而不是过滤结果。如果您只想查看包含近年的记录,请在报告过滤器中使用上述#2中的表达式。 – Jamey 2010-03-11 16:35:21

3

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

此链接详细地解释了这个问题,解决方法:得到这个谜解决http://www-01.ibm.com/support/docview.wss?uid=swg21339433