1

我有一个列表,其中有一列“YEAR”。我想让最近一年(2010 年)在“年份”列中显示为粗体。我试过这个表达

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

其中 [RECENT_YEAR] 是带有表达式的 DataItem maximum([YEAR])

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

我得到的错误:

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

4

2 回答 2

3

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

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

于 2012-11-13T15:45:56.777 回答
1

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

  1. 我创建了 [recent_year] 列如下 maximum ([cognos_test].[year] for report):(如果需要,您可以使用不同的范围。)
  2. 在条件资源管理器中创建了一个布尔变量,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 列的“List Column Title”对象设置为“None”。
于 2010-02-27T03:01:58.763 回答