如何让Access窗体中的数据表实现实时自动求和

在Excel中可以轻松实现一行数据的自动求和功能,只要设置好求和公式,改变任意一个加数的值,”和”值都可以得到立即更新。我希望在图1所示的Access的数据表中,也实现这样的功能。经过多天的努力,终于实现了这个功能。分享出来供有同样需求的人员参考。
图1
具体的实现过程如下:

  1. 子窗体关联数据源字段的文本框中,选择作为加数的文本框,为它设置单击事件,在这个事件中让Access获得选中数据的行号。
Private Sub JAN_Click()
selectID = Me.ID  ‘selectID是一个在类模块中定义的公有变量
End Sub

  1. 为上面选中的文本框,再设置一个数据更新后的事件,在这个事件中让文本框内变更的数据刷新到所关联的作为数据源的数据表中,并调用一个执行求和运算的模块内公有过程,该过程内可以调用一个类模块中的一个求和运算的公有函数,最终实现当加数的值变动后,和值可以立即相应变化的功能。
Private Sub JAN_AfterUpdate()
Me.Requery
Call fn
End Sub
Public Function fn()
Dim sngTemp As Single
sngTemp = CaculSum("K_固废处理支出费用统计表", selectID)
DoCmd.SetWarnings False
DoCmd.RunSQL "update K_固废处理支出费用统计表 set Year_Total=" & sngTemp & " where ID=" & selectID
DoCmd.SetWarnings True
Forms![frm_固废处理数据统计].fig6.Requery
Forms![frm_固废处理数据统计].fig8.Requery
End Function

  1. 在类模块中定义一个公有的变量和求和函数。
Public selectID As Integer
Public Function CaculSum(tableName As String, intID As Integer) As Single
Dim strSQL As String
Dim tempQuery As DAO.Recordset
Dim m As Single
strSQL = "select JAN, FEB, MAR, APR, MAY, JUNE, JULY, AUG, SEPT, OCT, NOV, DEC " & _
         " from " & tableName & " where ID=" & intID
Set tempQuery = CurrentDb.OpenRecordset(strSQL)
m = 0
For i = 0 To 11
    m = m + tempQuery(i)
Next
tempQuery.Close
Set tempQuery = Nothing
CaculSum = m
End Function

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值