在Access应用开发中,开发账目管理之类的程序时,经常会遇到需要对余额进行累计的情况,即:本期余额=前期余额 + 本期收入 – 本期支出。本文讲述了如何通过使用自定义函数,在查询中实现这样的功能。
我们以图1所示的表举例,通过查询得到如图2所示的余额累计效果:
(图1)
(图2)
要实现这样的效果,首先我们需要创建一个模块,然后在模块中创建如下的自定义函数,然后保存该模块:
'函数用途: 求累计结余金额
'输入参数: ID 对应查询中当前行ID字段的值
' Balance 对应查询中的当前行结余金额的值
'使用注意: 必须以ID字段排升序,否则会出错
Public Function GetBalance(ID As Long, Balance As Currency) As Currency
Static lngPreID As Long '前次ID
Static curPreBalance As Currency '前次余额
If ID > lngPreID Then
curPreBalance = curPreBalance + Balance
Else
curPreBalance = Balance
End If
lngPreID = ID
GetBalance = curPreBalance
End Function
|
然后我们在查询设计中使用这个函数创建【累计结余】这个计算字段(图3):
这里实现的原理是:由于在查询的计算字段中使用了自定义函数,这样每加载一行记录时都会调用 一次自定义函数,我们通过一个静态变量将前期余额保存起来,在每次调用时把本期余额传递给这个函数,然后在函数中将本期余额和前期余额相加后返回,并将静态变量重置为相加后的结果以供下一次调用时使用。
附 件:
点击下载此附件
演 示: