从 crystal 报告中的过滤金额中获取以前的总计

get previous total from filtered amount in crystal report

我使用 VB.Net 2012 在 Crystal 报告中创建了以下报告。期初余额和净总计行不在我的报告中,但我的问题在那里。

TR_ID | TR_DATE   |DETAILS | EXPENSE | INCOME   |   BALANCE

OPENING BALANCE                                         0.00

1005   08/24/2015 CASH RTN       0.00  10,000.00   10,000.00

1013   08/25/2015 PURCHASE   3,500.00       0.00    6,500.00

1014   08/25/2015 DEPOSIT    5,000.00       0.00    1,500.00

1013   08/27/2015 SALES          0.00   4,000.00    5,500.00

NET TOTAL                                           5,500.00

我过滤了 08/25/201508/26/2015 日期范围内的特定记录,效果很好。我的问题是如何获得 "OPENING BALANCE" 行中特定日期 (08/25/2015) 的先前余额 (10000) 和 "NET TOTAL" 行中的总余额?

根据上面给定的数据,报告显示了 4 条记录,不包括 OPENING BALANCE & NET TOTAL 行。我想在打开报表时添加 OPENING BALANCE 行以显示每个供应商帐户的期初余额。如果我在一个日期范围内查看特定客户的记录,那么 OPENING BALANCE 行应该显示之前的余额,直到给定日期标准的开始日期。例如:如果我根据上述数据 select 从 08/25/2015 到 08/26/2015 进行记录,则报告将显示两个特定记录(第 2 条和第 3 条)。但我想显示之前的余额 10,000 或高于星日期 (08/25/2015) 的总金额应该显示在 OPENING BALANCE 行中。以及该商户的小计金额 应显示在最后一个 NET TOTAL 行中。所以,请帮助我,公式将如何出现以及如何做。

谢谢

期待您的大力帮助 谢谢

我不太清楚,但您可以尝试使用变量直接从报告中获取值。

报告打开后,您可以在Crystal报告选项和select "Selection Expert - Saved Data"中输入。

您必须使用左侧面板的 "Formula Field" 创建一个公式,并使用前 3 个 windows 构建它:

  • 第一个顶部 window 显示 table 您的报告句柄的字段;
  • 中间顶部window显示一些内置公式

所以,你必须

  1. 转到公式字段并创建一个新字段;
  2. Select左上角的字段window你要获取的(开场白)
  3. 将其拖放到主 window(在 3 个顶部 select 离子下方)并将其另存为新变量
  4. 将此变量添加到您的报告中。这样,您就可以在同一报表中获取此字段进行计算。

你需要做吗? 对不起,如果我不能确切地理解你需要什么。 抱抱!

更新 您可能有 TOTAL 在报告中创建 SUM 的公式。

  1. 单击字段 EXPENSE(显示在 3 行中)和菜单中的 select:CRYSTAL 报告 - 插入 - 摘要。它将创建一个必须位于底部的字段(在将创建的新组中)。
  2. 对 INCOME 字段执行相同操作。
  3. 在底部创建一个 FORMULA FIELD 来计算两个 SUMARIES 之间的差异。您可以命名每个汇总字段(如 IncSum 和 ExpSum)并放入第三个字段:IncSum-ExpSum。您也可以将它们设置为不可见。
  4. 您的最终余额应为:
    OldBalance(我指向下一行的参数) + Movement(反映IncSum-ExpSum的字段)

要获得 last/old 余额,您可能必须通过代码将其作为参数传递。为此,请在报告中创建一个参数:在 FIELD EXPLORER 中看到您可以选择 PARAMETER FIELD。创建后,使用此代码:

Dim MyCrystalReportt As New ReportDocument()

    MyCrystalReportt.Load(Application.StartupPath & "\ReportSample.rpt\")
    MyCrystalReportt.SetDatabaseLogon(UserID, Password, DataSource, InitialCatalog)

    Dim myLogonInfo As New TableLogOnInfo()
    Dim myTable As Table

    For Each myTable In MyCrystalReportt.Database.Tables
        myLogonInfo = myTable.LogOnInfo
        myLogonInfo.ConnectionInfo.ServerName = DataSource
        myLogonInfo.ConnectionInfo.DatabaseName = InitialCatalog
        myLogonInfo.ConnectionInfo.UserID = UserID
        myLogonInfo.ConnectionInfo.Password = Password

        myTable.ApplyLogOnInfo(myLogonInfo)
    Next

    MyCrystalReportt.SetParameterValue("Data1", LastBalance.Value.ToString)

    ReportsForm.CrystalReportViewer1.Reportsource = MyCrystalReport
    ReportsForm.show

备注:

  • 您可能有一个表单 (ReportsForm),在 (CrystalReportViewer1) 中有一个 Crystal 控件。
  • 数据源是服务器名称或 IP
  • InitialCatalog 是数据库(不是 table!)
  • ParameterValue 必须是字符串 - 如果需要数字,请在报告中将其转换为数字。使用 temp_field 得到它(参见 Crystal 的公式,你会找到一些来完成这个任务)。

希望对您有所帮助。 祝你好运。