值表达式错误:“[BC30456] 'RdlObjectModel' 不是 'Reporting Services' 的成员

问题描述 投票:0回答:3

偶然发现一个晦涩的问题。发布此内容是因为我对堆栈溢出的搜索没有找到我的答案。希望这对其他人有帮助。

问题: 我的报告服务报告将编译,但在运行时会出现以下错误:

[BC30456] 'RdlObjectModel' is not a member of 'Reporting Services'

这是在我将整个 tablix 从一份报告复制/粘贴到另一份报告后发生的。
在我撤消更改并删除 tablix 后,它再次工作。
我复制/粘贴的带有 Tablix 的原始报告工作正常。

reporting-services ssrs-2008 ssrs-expression
3个回答
78
投票

找到这个错误报告,它准确地解释了我遇到的问题:

http://connect.microsoft.com/SQLServer/feedback/details/757358/pasting-objects-with-expressions-pastes-filled-qualified-functions

上述摘要:当您将报告服务表达式从一个位置复制/粘贴到另一个位置时(我复制了整个 Tablix,其中包含表达式),该表达式的所有部分都会扩展为其全名。当您复制/粘贴包含“Cstr()”的表达式时,存在一个特定的错误。它得到的全名无法正确解析。

幸运的是,即使您的报告中有大量此类表达式,这也很容易解决。 --转到“查看”>“代码” 查找“RdlObjectModel”或“Cstr”。您正在寻找这样的东西:

Microsoft.ReportingServices.RdlObjectModel.ExpressionParser.VBFunctions.Cstr([your expression here])

-删除从“Microsoft”到“Cstr”的所有内容,如下所示:

Cstr([your expression here])

-保存。当您首先复制/粘贴表达式时,您基本上已经撤消了报告服务如此“有帮助”地尝试执行的操作。


4
投票

我刚刚遇到了类似的问题,但它是与另一个转换函数 - CDEC 相关的。我的猜测是,使用转换组中的任何函数(可能还有其他函数)都会出现类似的问题。

我自己想出了办法,并删除了愚蠢的编辑器添加的 Microsoft.ReportingServices.RdlObjectModel.ExpressionParser.VBFunctions。。显然,它在复制任何其他对象时添加了完全限定的愚蠢 dotNET 表示法。

不幸的是,微软的那些混蛋已将此错误标记为“永远不会修复”(就像大多数微软错误一样)。


0
投票

如果有人偶然发现这个问题 - 我通过将数据集中的字段从 fieldname 重命名为 fieldname1 来修复此问题,然后在字段的表达式中反映这一点。

© www.soinside.com 2019 - 2024. All rights reserved.