IBMCognosReportStudio:在TM1多维数据集上使用IF/CASE时出现任意错误



在Report Studio中使用TM1多维数据集时,IF/CASE表达式出现了一些问题。

我正在用一个元组函数"过滤"一个交叉表,该函数包含一个来自"分支"维度的元素。用户可以通过我所做的值提示在这个分支层次结构中导航。

因此,用户要求他们每次都能看到自己在分支层次结构中的位置(即,看到从根到当前节点的路径)。

因此,我尝试制作两个查询表达式,它们始终表示当前节点和当前级别:

[CurrentBranch]:

#prompt('pBranch', 'MUN', '[Cube].[Dimension].[Hierarchy].[Level]->:[TM].[Dim_Branch].[Dim_Branch].[@MEMBER].[49981]')#

[CurrentLevel]:

ordinal(level([CurrentBranch]))

这两种方法都按预期工作。然而,当我试图使用IF/CASE语句来显示正确数量的父级时,我会遇到各种各样的任意错误。一个例子是[FirstPrent]表达式:

IF ([CurrentLevel] > 1) THEN
(roleValue('_memberCaption', parent([CurrentBranch])))
ELSE
('')

它会产生以下错误。。。

Data size error. The data type is 'cclDTypeExternalBuffer'.

当[FirstPParent]添加到布局计算时。

如果我将表达式更改为(只是为了测试If语句):

IF (1 > 0) THEN
(roleValue('_memberCaption', parent([CurrentBranch])))
ELSE
('')

显示了相同的错误。如果我将语句更改为

IF (1=0) THEN
(roleValue('_memberCaption', parent([CurrentBranch])))
ELSE
('')

IF (1=1) THEN
(roleValue('_memberCaption', parent([CurrentBranch])))
ELSE
('')

没有显示错误,结果是正确的。

但是,如果我现在将表达式更改为:

IF ([CurrentLevel]=1) THEN
(roleValue('_memberCaption', parent([CurrentBranch])))
ELSE
('')

则再次显示相同的错误。

Data size error. The data type is 'cclDTypeExternalBuffer'.

我曾尝试将[CurrentLevel]封装在使用OLAP时支持的各种常见函数中(例如abs()),但没有成功。

你知道为什么会发生这种情况以及如何解决吗?

这真的超出了我的理解范围。

感谢您的任何意见!

找到了这样的解释,称"报表表达式旨在访问参数和报表会话属性;使用它们访问查询项可能容易出错。"报表表达式就是我所说的布局计算

http://www-01.ibm.com/support/docview.wss?uid=swg21340596

因此,我解锁了报告并直接包含了数据项。这样一来,一切都按计划进行。

相关内容

  • 没有找到相关文章

最新更新