我在寻找各种方法来追查其中的SSRS错误正在发生。

我有一个报告,宽约90列具有多个公式。那我遇到的问题是,在公式之一,也是由零错误鸿沟。我已经在这个实现的答案从罗伯特·哈维的问题但我仍然得到错误。我知道答案的作品,因为我已经测试了小报告。

所以现在的问题是:如何在地球上,你确定将错误在SSRS存在的时候SSRS只报告发生错误?

修改所显示的错误是

  

点击错误报告处理零错误中遇到结果不能为数据集MainReport结果除以读取下一个数据行期间occoured本地报表处理过程中发生错误

有帮助吗?

解决方案

修改结果 而不是使用IIF语句和其他人,我会reccomend执行以下操作...添加自定义功能,以您的报表,转到报表属性和代码标签。创建以下。具体地识别所引发错误的领域,你可以改变这个返回一个字符串,也许“#OOOOOOPS”,所以它伸出的报告。

Public Function SafeDivision(ByVal top As Decimal, ByVal bottom As Decimal) As Decimal
   If bottom = 0 Then
      Return 0
      Else : Return top / bottom
   End If
End Function

添加此功能后,去为你的所有,将发生分裂的字段的表达图。您可以通过键入执行这个新创建的功能:

=Code.SafeDivivision(CDbl(1.24), CDbl(0))

<强> ORIGINAL 结果 如果您在Visual Studio中运行报表,它告诉你哪些特定的文本/标签/场计算失败?这应该帮助找出其中的问题是从哪里来的,但你也可以通过查看下面的代码,确保你从来没有在分母0执行除法...

//myBottom would be the value of the denominator 
//myTop would be the value of the numerator 

= IIF(myBottom <> 0, myTop / myBottom, "")

其他提示

<强>跟进结果 这个问题最终被SQL查询。作为SQL查询的一部分,我作为在类似于下列条款。

Select ID, Name, price/kg as unitpice from products where ID In (@ProductIds)

SSRS使用exec sp_executesql和与string.replace注入ID的入IN子句。

我的问题是我会在运行SQL工作室经理查询。与所有的变量输入并预期它会工作。但SSRS下它会失败,除零错误,并没有真正的明确指示在出现错误。

我所作的报告的副本,删除的项目一个接一个,直到有litrally没有留在报告渲染,它仍然产生错误后,我把我的注意SQL查询。

在那里,错误已存在的。我只找到它使用SQL Profiler来找出SSRS在实际运行后。

这之后,它被删除问题的行并返回分的单独的部件,并通过该RSolberg建议的功能运行它的relativly容易解决。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top