从 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/2015
和 08/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显示一些内置公式
所以,你必须
- 转到公式字段并创建一个新字段;
- Select左上角的字段window你要获取的(开场白)
- 将其拖放到主 window(在 3 个顶部 select 离子下方)并将其另存为新变量
- 将此变量添加到您的报告中。这样,您就可以在同一报表中获取此字段进行计算。
你需要做吗?
对不起,如果我不能确切地理解你需要什么。
抱抱!
更新
您可能有 TOTAL 在报告中创建 SUM 的公式。
- 单击字段 EXPENSE(显示在 3 行中)和菜单中的 select:CRYSTAL 报告 - 插入 - 摘要。它将创建一个必须位于底部的字段(在将创建的新组中)。
- 对 INCOME 字段执行相同操作。
- 在底部创建一个 FORMULA FIELD 来计算两个 SUMARIES 之间的差异。您可以命名每个汇总字段(如 IncSum 和 ExpSum)并放入第三个字段:IncSum-ExpSum。您也可以将它们设置为不可见。
- 您的最终余额应为:
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 的公式,你会找到一些来完成这个任务)。
希望对您有所帮助。
祝你好运。
我使用 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/2015
和 08/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显示一些内置公式
所以,你必须
- 转到公式字段并创建一个新字段;
- Select左上角的字段window你要获取的(开场白)
- 将其拖放到主 window(在 3 个顶部 select 离子下方)并将其另存为新变量
- 将此变量添加到您的报告中。这样,您就可以在同一报表中获取此字段进行计算。
你需要做吗? 对不起,如果我不能确切地理解你需要什么。 抱抱!
更新 您可能有 TOTAL 在报告中创建 SUM 的公式。
- 单击字段 EXPENSE(显示在 3 行中)和菜单中的 select:CRYSTAL 报告 - 插入 - 摘要。它将创建一个必须位于底部的字段(在将创建的新组中)。
- 对 INCOME 字段执行相同操作。
- 在底部创建一个 FORMULA FIELD 来计算两个 SUMARIES 之间的差异。您可以命名每个汇总字段(如 IncSum 和 ExpSum)并放入第三个字段:IncSum-ExpSum。您也可以将它们设置为不可见。
- 您的最终余额应为:
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 的公式,你会找到一些来完成这个任务)。
希望对您有所帮助。 祝你好运。