获取访问报告中的先前计算值

时间:2014-12-21 19:25:42

标签: sql report ms-access-2013

我有一个报告可以计算表中的几个结果,有没有办法从报告中的计算阵营中获取以前的值?

假设我有一个文本框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达到此目的更好吗?

2 个答案:

答案 0 :(得分:1)

这仅适用于“打印预览”模式(即不是正常的报表查看模式),但您可以使用您尝试获取之前值的字段的Format事件。

我的表格看起来像这样

enter image description here

报告看起来像

enter image description here

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

它生成一个类似于此的报告

enter image description here

同样,它必须从Print Preview运行。 “正常报告”视图不会触发“格式化事件”

enter image description here

答案 1 :(得分:0)

您的问题的答案是:在需要跟踪历史值的任何特定字段上实施时间序列表。例如,假设您有一个' Employees'数据表带有' Salary'领域。在这种情况下,新值将覆盖先前输入的值。为了解决此问题并能够跟踪历史值,请创建第二个表Salary链接到主表"员工"在主要ID字段中,添加“薪资”字样。字段和TimeStamp字段,因此您可以跟踪员工的工资历史记录。

您的报告将基于两个表之间的Join,因此您可以按降序显示按TimeStamp排序的当前(最新)和以前的值。

希望这会有所帮助。