代码之家  ›  专栏  ›  技术社区  ›  Nathan Fisher

调试SSR的最佳策略是什么?

  •  3
  • Nathan Fisher  · 技术社区  · 17 年前

    question 但我仍然得到了错误。我知道答案是有效的,因为我已经在一个小报告上测试了它。

    所以问题是:当SSRS只报告发生了错误时,你究竟如何识别SSRS中的错误发生在哪里?

    编辑 显示的错误如下所示


    在报表处理过程中发生错误
    无法读取dataset MainReport的下一个数据行

    2 回复  |  直到 9 年前
        1
  •  6
  •   RSolberg    17 年前

    编辑

    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))
    

    起初的
    如果在visual studio中运行报告,它是否会告诉您计算失败的具体文本框/标签/字段?这将有助于确定问题的来源,但您也可以通过查看下面的代码来确保永远不会执行分母为0的除法。。。

    //myBottom would be the value of the denominator 
    //myTop would be the value of the numerator 
    
    = IIF(myBottom <> 0, myTop / myBottom, "")
    
        2
  •  1
  •   Nathan Fisher    17 年前

    跟进

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

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

    我遇到的问题是,我将在SQLStudioManager中运行查询。输入所有变量后,它将按预期工作。但是,在SSRS下,它将失败,出现零除错误,并且没有真正明确的指示错误发生在哪里。

    就是在那里发生了错误。我只是在使用SQL事件探查器找出SSRS实际运行的内容后才找到它的。

    之后,删除有问题的行并返回divide的单独部分,并通过RSolberg建议的函数运行它,这是相对容易的修复方法。

    推荐文章