用于修复 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 的自定义代码的主要内容,如果未能解决你的问题,请参考以下文章