0
+----------+------------+------+------+--------------+---------+---------+
|          |    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 行计算上述所有列的总数。一切都很好。但在状态栏中显示通过。如果状态列中有单个失败,我希望它显示失败。如果 Result < Min 则我正在生成状态,那么它是失败的,否则它是通过的。现在如何根据条件更改下面的 SubTotal 行。有没有办法直接从数据库中显示小计行。任何建议。

4

1 回答 1

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 中的小计行(以便小计字段出现在数据集中的每一行上)并使用这些字段。
  • 再次,使用自定义代码(但这对于小计来说可能过于复杂)

但是,这些技巧仅适用于奇怪的情况,通常可以调整正常的开箱即用小计以提供您想要的结果。如果您想知道具体的事情,最好在单独的问题中解释问题,以便可以单独处理该问题。

于 2012-05-14T07:36:09.533 回答