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

Voy*_*ead 25 reporting-services ssrs-2008

偶然发现一个不起眼的问题.发布,因为我的堆栈溢出没有找到我的anwser.希望这会帮助别人.

问题:我的报告服务报告将编译,但在运行时提供错误的行...

[BC30456]'RdlObjectModel'不是'Reporting Services'的成员

这是在我将整个Tablix从一个报表复制/粘贴到另一个报表后发生的.在反转更改并再次删除Tablix之后,报告可以正常工作.Tablix我复制/粘贴的原始报告工作正常.

Voy*_*ead 51

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

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

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

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

Microsoft.ReportingServices.RdlObjectModel.ExpressionParser.VBFunctions.Cstr([your expression here])
Run Code Online (Sandbox Code Playgroud)

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

Cstr([your expression here])
Run Code Online (Sandbox Code Playgroud)

-保存.当你首先复制/粘贴表达时,你基本上没有报告过什么"帮助"尝试做的报告服务.

  • 将包含表达式的表复制到同一报表时,我遇到了同样的问题.这个答案解决了它.非常感谢 ! (3认同)

Han*_*ist 5

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

我自己解决了这个问题并删除了Microsoft.ReportingServices.RdlObjectModel.ExpressionParser.VBFunctions。那个愚蠢的编辑补充道。显然,它在复制任何其他对象时添加了完全限定的愚蠢的 dotNET 表示法。

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