从水晶报告中的过滤量中获取先前的总数

时间:2015-09-04 12:16:40

标签: vb.net crystal-reports report

我使用VB.Net 2012在Crystal Report中创建了以下报告。开放平衡& NET TOTAL行不在我的报告中,但我的问题就在那里。

User-Class

我在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/2015&日期范围内过滤了特定记录。它运作良好。我的问题是如何获得特定日期08/26/2015的先前余额(10000)" OPENING BALANCE"行和总净余额" NET TOTAL"行?

根据上面给出的数据,报告显示了4条记录,不包括OPENING BALANCE&净总值。我想添加OPENING BALANCE行以显示每个供应商的期初余额'我打开报告时的帐户。如果我在日期范围内查看特定客户的记录,则OPENING BALANCE行应显示之前的余额,直到给定日期标准的开始日期为止。例如:如果按照以上数据选择2015年8月25日至2015年8月26日期间的记录,报告将显示两个特定记录(第2和第3个)。但我希望显示之前的余额10,000或星级日期(2015年8月25日)以上的总金额应显示在OPENING BALANCE行中。以及该供应商的子总量  应显示在最后一个NET TOTAL行中。所以,请帮助我,公式将如何发生&怎么办。

谢谢

我期待你的帮助 谢谢

1 个答案:

答案 0 :(得分:1)

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

打开报告后,您可以在CrystalReport选项中输入并选择“选择专家 - 保存的数据”。

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

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

所以,你必须

  1. 转到公式字段并创建一个新字段;
  2. 选择您想要获得的左上角窗口中的字段(打开)
  3. 将其拖放到主窗口(3个顶部选项下方)并将其另存为新变量
  4. 将此变量添加到报告中。这样,您可以在同一报告中获取此字段以进行计算。
  5. 你需要做什么? 对不起,如果我无法准确理解你的需求。 拥抱!

    <强>更新 您可以在报告中创建一个SUM公式。

    1. 单击字段EXPENSE(显示在3行中)并在菜单中选择:CRYSTAL REPORTS - INSERT - SUMMARY。它将创建一个必须位于底部的字段(将在新组中创建)。
    2. 对INCOME字段执行相同的操作。
    3. 在底部创建一个FORMULA FIELD来计算两个SUMARIES之间的差异。您可以命名每个摘要字段(如IncSum和ExpSum)并输入第三个字段:IncSum-ExpSum。您也可以将它们视为隐形。
    4. 您的最终余额应为:
      OldBalance(参数我指向下一行) + 移动(反映IncSum-ExpSum的字段)
    5. 要获取最后/旧余额,您可能必须从代码中获取它作为PARAMETER传递。要执行此操作,请在报告中创建参数:在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
      

      备注:

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

      我希望它可以帮到你。 祝你好运。