ReportViewer中的Sumtotal

时间:2012-05-14 06:45:50

标签: asp.net reporting-services report reportviewer

+----------+------------+------+------+--------------+---------+---------+
|          |    SUBJ    |  MIN |  MAX |    RESULT    | STATUS  | PERCENT |
|          +------------+------+------+--------------+---------+---------+
|          |  Subj1     |   35 |  100 |        13    |  FAIL   |  13.00% |
|EXAM NAME |  Subj2     |   35 |  100 |        63    |  PASS   |  63.00% |
|          |  Subj3     |   35 |  100 |        35    |  PASS   |  35.00% |
|          +------------+------+------+--------------+---------+---------+
|          |  Total     |  105 |  300 |       111    |  PASS   |  37.00% |
+----------+------------+------+------+--------------+---------+---------+

这是我的报告查看器报告格式.SubTotal行计算  以上所有列的总和。每件事都很好。但在状态  列显示Pass。如果有单身,我希望它显示失败  在状态列中失败。如果结果<我正在生成状态那么  它失败了,否则就过去了。现在如何更改SubTotal行  以下取决于条件。有没有办法表明  直接来自数据库的小计行。任何建议。

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用自定义代码(右键单击报表的非显示区域,选择“属性”并单击“代码”选项卡) - 计算详细信息中的通过/未通过分数,将其显示在组中页脚并在组头中重置:

Dim PassFail As String

// Reset Pass or Fail status in group header
Public Function ResetAndDisplayStatusTitle() AS String
    PassFail = "PASS" // Initialise status to pass
    ResetAndDisplayStatusTitle = "Status"
End Function

// Calculate pass/fail on each detail row and remember any fails
Public Function CalculatePassFail() As String
    Dim ThisResult As String

    // Calculate whether this result is pass or fail
    If Fields!Result.Value < Fields!Min.Value Then
        ThisResult = "FAIL"
    Else
        ThisResult ="PASS"
    End If

    // Remember any failure as overall failure
    If ThisResult = "FAIL" Then PassFail = "FAIL"

    CalculatePassFail = ThisResult
End Function

然后,您将自定义代码绑定到表格中的单元格,如下所示:

在您的群组标题中的状态列的值中输入:

=Code.ResetAndDisplayStatusTitle()

在您输入的详细信息行中的状态列的值中:

=Code.CalculatePassFail()

在您输入的组页脚中的状态列的值中:

=Code.PassFail

关于直接从数据库中获取数据库中的小计行,有几种方法取决于您所追求的结果。

  • 将详细信息行加入SQL中的小计行(以便小计字段显示在数据集的每一行上)并使用这些字段。
  • 再次,使用自定义代码(但这可能过于复杂地进行小计)

然而,这些技巧仅适用于特殊情况,一般情况下,可以调整正常的开箱即用小计,以提供您所追求的结果。如果您想知道具体的内容,最好在单独的问题中解释问题,以便可以单独处理问题。