用于修复 s-s-rS 报告中显示的 #Error 的自定义代码

Posted

技术标签:

【中文标题】用于修复 s-s-rS 报告中显示的 #Error 的自定义代码【英文标题】:Custom code to fix #Error showing in s-s-rS reports 【发布时间】:2012-09-16 03:23:40 【问题描述】:

我有一些使用 Report Builder 3 for MSSQL 2008 Reporting Services 构建的报告。 我的报告中的某些字段显示“#Error”,而不是这个我只想显示一个简单的“-”。是否有任何内置函数或自定义代码来解决这个问题?

【问题讨论】:

+1 的问题,但我还是要问:修复错误不是一种选择? 这不是一个选项,因为我使用的是 Previous 函数,因此对于第一行,它将始终显示#Error,我需要修复它并只显示一个“-”。 您能否详细说明产生#Error 的情况,例如导致它的公式以及它发生的条件? 第二个@ChrisLatta,如果没有前一项,Previous function 返回Nothing。您可以检查这种情况并在您的表达式中相应地处理它,以防止 #Error 甚至发生。 我试过这个 iif(IsNothing(Previous(Fields!MyField.Value)), "-", Previous(Fields!MyField.Value))..但它似乎不起作用。 【参考方案1】:

我仍然很想看看你的公式,但你似乎决定不展示它,所以我会在没有它的情况下尝试回答。我想你正在做一些事情,比如将当前行的字段除以前一行的字段。但是,这会在第一行给你Infinity,而不是#Error,所以还有其他事情发生。但无论如何我们还是用这个来运行,因为我们没有你的公式。

解决此问题的最常见方法是检查 Previous 函数是否返回 Nothing,通常表明您在第一行(假设您的字段始终有数据)。这样做的好处是还可以处理不能保证有值的字段。

 =IIF(IsNothing(Previous(Fields!MyField.Value)), "-", Fields!MyField.Value / Previous(Fields!MyField.Value))

这是您可以使用行号的另一种方法,无论如何它都会检查第一行:

=IIF(RowNumber(Nothing) = 1, "-", Fields!MyField.Value / Previous(Fields!MyField.Value))

这假定错误是由值公式引起的,而不是由其他机制引起的,例如将表达式应用于其他属性,如格式、颜色,当没有前一行时,这是无效的。

【讨论】:

以上是关于用于修复 s-s-rS 报告中显示的 #Error 的自定义代码的主要内容,如果未能解决你的问题,请参考以下文章

用于报告值提示的 s-s-rS 超链接

如何在 s-s-rS 报告中显示提供的搜索参数?

空参数值的 s-s-rS 表达式返回 #Error

s-s-rS 2012 SP3 报告引发错误“无效 URI:Uri 字符串太长”

无法刷新 s-s-rs 报告中的数据字段

在 s-s-rS 报告中显示上标