DAO计算累计-半夜罗
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> 财务应用


DAO计算累计

发表时间:2019/4/15 15:48:23 评论(22) 浏览(8588)  评论 | 加入收藏 | 复制
   
摘 要:累计
正 文:

在实际中,经常用到逐行累计,有单一字段的累计,有多字段累计,在查询中计算不占资源,但数据量大时,速度极慢,并且会出现文本框获得焦点后其值也会改变的情况,在表中计算又会遇到一个系统中有多个类似的表,每个表的计算基本类似,总想用函数来完成,经过多次失败,多次在本站请教,终于成功写出了这个函数,现分享给初学Access的

Function 分组累计余额(str表名称 As String, _
                str序号 As String, _
                str分组 As String, _
                str借方 As String, _
                str贷方 As String, _
                str余额 As String)
'调用:call 分组累计余额("表名称","序号字段","分组字段","借方","贷方","余额")
'分组:分组字段,文本型
'序号:数字型
'借方、贷方:文本与数字都可
    Dim rst As DAO.Recordset
    Dim strSql As String
    Dim f As String
    Dim y As Double
    strSql = "Select * FROM " & str表名称
    strSql = strSql & " orDER BY " & str分组 & "," & str序号 & ";"
    Set rst = CurrentDb.OpenRecordset(strSql, dbOpenDynaset)
    Do While Not rst.EOF
        rst.Edit
        If f <> rst(str分组) Then
            f = rst(str分组)
            y = 0
        End If
        rst(str余额) = Nz(rst(str借方), 0) - Nz(rst(str贷方), 0) + y
        y = rst(str余额)
        rst.Update
        rst.MoveNext
    Loop
    rst.Close
    Set rst = Nothing
End Function


Function 不分组累计余额(str表名称 As String, _
                str序号 As String, _
                str借方 As String, _
                str贷方 As String, _
                str余额 As String)
'调用:call 不分组累计余额("测试表","序号","借方","贷方","余额")
'序号:数字型
'借方、贷方:文本与数字都可
    Dim rst As DAO.Recordset
    Dim strSql As String
    Dim f As String
    Dim y As Double
    strSql = "Select * FROM " & str表名称
    strSql = strSql & " orDER BY " & str序号 & ";"
    Set rst = CurrentDb.OpenRecordset(strSql, dbOpenDynaset)
    Do While Not rst.EOF
        rst.Edit
        rst(str余额) = Nz(rst(str借方), 0) - Nz(rst(str贷方), 0) + y
        y = rst(str余额)
        rst.Update
        rst.MoveNext
    Loop
    rst.Close
    Set rst = Nothing
End Function


Function 分组累计字段(str表名称 As String, _
                str序号 As String, _
                str分组 As String, _
                str金额 As String)
'调用:call 分组累计字段("表名称","序号字段","分组字段","金额字段")
'分组:分组字段,文本型
'序号:数字型
    Dim rst As DAO.Recordset
    Dim strSql As String
    Dim f As String
    Dim y As Double
    strSql = "Select * FROM " & str表名称
    strSql = strSql & " orDER BY " & str分组 & "," & str序号 & ";"
    Set rst = CurrentDb.OpenRecordset(strSql, dbOpenDynaset)
    Do While Not rst.EOF
        rst.Edit
        If f <> rst(str分组) Then
            f = rst(str分组)
            y = 0
        End If
        rst(str金额) = Nz(rst(str金额)) + y
        y = rst(str金额)
        rst.Update
        rst.MoveNext
    Loop
    rst.Close
    Set rst = Nothing
End Function


Function 不分组累计字段(str表名称 As String, _
                str序号 As String, _
                str金额 As String)
'调用:call 不分组累计字段("表名称","序号字段","金额")
'序号:数字型
    Dim rst As DAO.Recordset
    Dim strSql As String
    Dim y As Double
    strSql = "Select * FROM " & str表名称
    strSql = strSql & " orDER BY " & str序号 & ";"
    Set rst = CurrentDb.OpenRecordset(strSql, dbOpenDynaset)
    y = 0
    Do While Not rst.EOF
        rst.Edit
        rst(str金额) = rst(str金额) + y
        y = rst(str金额)
        rst.Update
        rst.MoveNext
    Loop
    rst.Close
    Set rst = Nothing
End Function点击下载此附件


Access软件网交流QQ群(群号:198465573)
 
 相关文章
【Access文章】如何在查询中实现累计余额计算的功能  【缪炜  2014/7/18】
【Access源码示例】--动态累计的问题  【宏鹏  2014/8/6】
财务收支的累计余额示例  【恐龙的传人  2015/3/30】
分组报表分页打印格式设置,分组金额小计,累计的心得!  【fresun  2015/9/6】
联合表,用查询求累计值  【仙来  2016/1/13】
计算累计余额  【半夜罗  2017/11/19】
常见问答
技术分类
相关资源
文章搜索
关于作者

半夜罗

文章分类

文章存档

友情链接