我有一个报告可以计算表中的几个结果,有没有办法从报告中的计算阵营中获取以前的值?
假设我有一个文本框A,它位于报告中的“组”内,我需要计算另一个需要A的前一个值的结果,例如:
FieldA(1) = TableValue1 FieldB = null(cos FieldA doesn't have "previous" values") / 54 * 152
FieldA(2) = TableValue2 FieldB = FieldA(1) / 54 * 152
FieldA(3) = TableValue3 FieldB = FieldA(2) / 54 * 152
或者使用sql达到此目的更好吗?
答案 0 :(得分:1)
这仅适用于“打印预览”模式(即不是正常的报表查看模式),但您可以使用您尝试获取之前值的字段的Format
事件。
我的表格看起来像这样
报告看起来像
On Format
事件代码看起来像这样
Dim prev As String 'A form level variable (not in a sub/function)
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
txtPrevious = prev
prev = Me("field1").Value
End Sub
它生成一个类似于此的报告
同样,它必须从Print Preview运行。 “正常报告”视图不会触发“格式化事件”
答案 1 :(得分:0)
您的问题的答案是:在需要跟踪历史值的任何特定字段上实施时间序列表。例如,假设您有一个' Employees
'数据表带有' Salary
'领域。在这种情况下,新值将覆盖先前输入的值。为了解决此问题并能够跟踪历史值,请创建第二个表Salary
链接到主表"员工"在主要ID字段中,添加“薪资”字样。字段和TimeStamp
字段,因此您可以跟踪员工的工资历史记录。
您的报告将基于两个表之间的Join
,因此您可以按降序显示按TimeStamp
排序的当前(最新)和以前的值。
希望这会有所帮助。