【问题标题】:get previous total from filtered amount in crystal report从水晶报告中的过滤量中获取先前的总数
【发布时间】:2015-09-04 12:16:39
【问题描述】:

我使用 VB.Net 2012 在 Crystal Report 中创建了以下报表。OPENING BALANCE & NET TOTAL 行不在我的报表中,但我的问题在那里。

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 行应该显示之前的余额,直到给定日期标准的开始日期。例如:如果我根据上述数据选择 08/25/2015 到 08/26/2015 的记录,报告将显示两个特定记录(第 2 和第 3)。但我想显示之前的余额 10,000 或高于星号日期(2015 年 8 月 25 日)的总金额应显示在 OPENING BALANCE 行中。以及该供应商的总金额 应显示在最后的 NET TOTAL 行中。所以,请帮助我,公式将如何来以及如何做。

谢谢

我期待您的大力帮助 谢谢

【问题讨论】:

    标签: vb.net crystal-reports report


    【解决方案1】:

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

    打开报表后,您可以进入 CrystalReport 选项并选择“Selection Expert - Saved Data”。

    您必须使用左侧面板的“公式字段”创建公式,并使用顶部 3 个窗口构建它:

    • 第一个顶部窗口显示您的报告处理的表格的字段;
    • 中间顶部窗口显示一些内置公式

    所以,你必须

    1. 转到公式字段并创建一个新字段;
    2. 在左上角的窗口中选择您想要获取的字段(Openning)
    3. 将其拖放到主窗口中(在 3 个顶部选项下方)并将其另存为新变量
    4. 将此变量添加到您的报告中。这样,您就可以在同一个报告中获取该字段进行计算。

    你需要这样做吗? 抱歉,如果我不能完全理解您的需求。 拥抱!

    更新 您可能需要 TOTAL 在报表中创建 SUM 公式。

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

    要获取最后/旧余额,您可能必须从代码中获取它,并将其作为参数传递。为此,请在报告中创建一个参数:在 FIELD EXPLORER 中您可以选择 PARAMETER FIELD。创建后,使用以下代码:

    将 MyCrystalReportt 调暗为新 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),其中包含一个 Crystal 控件 (CrystalReportViewer1)。
    • 数据源是服务器名称或 IP
    • InitialCatalog 是数据库(不是表!)
    • ParameterValue 必须是字符串 - 是数字是必需的,将其转换为报告中的数字。使用 temp_field 获取它(参见 Crystal 的公式,您会找到一些来完成此任务)。

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

    【讨论】:

    • 亲爱的。我不知道如何回答你在这方面的问题。对不起。请查看我更新的问题。谢谢
    • 我对有用的解决方案感到满意。拥抱!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多