从Sum中排除被抑制的字段

时间:2015-03-09 15:29:30

标签: crystal-reports-xi

我需要你帮助排除组页脚中SUM的抑制金额。在详细信息部分,我有重复的交易号和金额。因此,在详细信息部分的专家部分中,我对公式“抑制”执行了一个条件,以禁止重复的字段:

{deal_no} =(next {deal_no})

上述条件适用于报告,我能够抑制重复。现在在组页脚中,我使用公式执行运行总计来计算金额的SUM。但是,此SUM正在计算抑制量,并且它正在给出结果。那么如何从计算中删除它们。

3 个答案:

答案 0 :(得分:1)

这是答案

WhilePrintingRecords;
If {deal_no} <> (next{deal_no}) OR OnLastRecord then //this excludes the duplicates
(
numbervar gsum := gsum + {@Cost};
numbervar grand := grand + gsum;
);

答案 1 :(得分:0)

您可以执行的操作不是使用running total,而是可以通过右键单击该字段并使用Insert Summary进行总结,这样可以得到正确的结果。

答案 2 :(得分:0)

我已经制作了函数funsumColumn(dtfunSum,&#34; intProductId&#34;,&#34; decCBMCMS&#34;) 并传递我想要求和的数据表,表ID名称和列名。

此函数返回唯一ID行的总和。

Private Function funsumColumn(ByVal dt As DataTable, ByVal idColumnName As String, ByVal ColumnForSum As String) As Decimal

    Dim dtnew As New DataTable
    dtnew.Columns.Add(idColumnName, GetType(Integer))
    dtnew.Columns.Add(ColumnForSum, GetType(Double))
    Dim dtMainTable As DataTable
    Dim ComputeColumnSum As Decimal
    Try
        Dim ExistIdInLocalTable As Integer
        Dim foundRow() As DataRow
        Dim PIid As Integer
        For i As Integer = 0 To dt.Rows.Count - 1
            PIid = dt.Rows(i).Item(idColumnName)
            foundRow = dtnew.Select("" & idColumnName & "='" & PIid & "'")
            ExistIdInLocalTable = foundRow.Count
            If foundRow.Count = 0 Then
                dtnew.Rows.Add(dt.Rows(i).Item(idColumnName), dt.Rows(i).Item(ColumnForSum))
            Else
            End If
        Next
        dtMainTable = dtnew
        ComputeColumnSum = dtMainTable.Compute("sum(" & ColumnForSum & ")", "")
        Return ComputeColumnSum
    Catch ex As Exception
    End Try
    Return ComputeColumnSum