子窗体合计的计算-半夜罗
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> 同城交流


子窗体合计的计算

发表时间:2018/1/29 16:16:22 评论(1) 浏览(11186)  评论 | 加入收藏 | 复制
   
摘 要:子窗体合计显示
正 文:
输入数据时为了及时反应子窗体的合计,虽然可以用简单的方法,但速度不太让人满意,为此我采用了ADO的方式,写了一个自定义函数,只要有数量、单价,就会即时计算出金额与合计金额,速度非常满意。而且在删除时自动修改行号。正式表不是不需要存储金额字段的,但临时表中必须要设一个金额字段。有了这个函数只需在数量、单价的更新后事件中  =批量填充金额(),和子窗体的确认删除后事件  =批量填充金额() 即可。删除某一行后,行号自动重新填充编号,合计金额也自动重新计算。
我根本不懂英语,所以写的代码基本都是用中文,有时也在中文前加一个字母,管他的,只要能得到结果,只要能看懂,又不是必须英文,将就吧。
在修改时的加载事件中同样  =批量填充金额()
更新后事件已经在相应的文本框中有了,不需要在窗体的更新后事件中再重复。
Public Function dm批量填充金额()
'--------------------------------------------定义记录集
    Dim rst As Object
    Dim strSQL As String
    '----------------------------------------定义序号与合计金额的变量
    Dim i序号 As Currency
    Dim Sum金额 As Currency
    '----------------------------------------如果临时表中没有数据时,退出
    If DCount("*", "入库单销售单明细临时表") = 0 Then Exit Function
    '----------------------------------------打开记录集
    strSQL = "select * from 入库单销售单明细临时表 "
    Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
    '----------------------------------------'如果当前处理未保存状态,先进行保存
    If Me.Dirty Then Me.Dirty = False
    '-----------------------------------------给变量设定初始值
    i序号 = 0 And Sum金额 = 0
    '-----------------------------------------从第一条记录开始
    rst.MoveFirst
    '-----------------------------------------循环进行
    Do Until rst.EOF
        '-------------------------------------允许修改
        rst.Edit
        '-------------------------------------修改各字段的值,这里是序号与金额
        rst!序号 = Format(i序号 + 1, "00")
        rst!金额 = my45(Nz(rst!数量, 0) * Nz(rst!单价, 0), 2)    '四舍五入,否则会出错,这里调用了自定义四舍五入函数
        '-------------------------------------修改后,就要更新,否则不会被修改
        rst.Update
        '-------------------------------------重新设定序号与合计金额的变量
        i序号 = rst!序号
        Sum金额 = Sum金额 + rst!金额
        '-------------------------------------下一条记录
        rst.MoveNext
    Loop
    '-------------------------------------将合计金额斌给主窗体
    Me.Parent!金额 = Sum金额
    rst.Close
    Set rst = Nothing
    Me.Parent!状态 = "未保存"
End Function
另附UMVSoft老师的四舍五入函数,这里就用到了。
Public Function my45(a As Double, n As Integer) As Double
  my45 = Int(a * 10 ^ n + 0.51 ) / 10 ^ n
End Function

Access软件网交流QQ群(群号:198465573)
 
 相关文章
【access入门】老生常谈--子窗体数据计算合计在主窗体汇总显示...  【麥田  2012/5/18】
Access糕富帅--横向汇总,纵向汇总,单表汇总,合计汇总且分类...  【麥田  2012/12/8】
【Access示例】主窗体合计子窗体中选项卡字段数据  【杨雪  2015/9/22】
【Access SQL语句】求列最靠前10名之和|top10合计示...  【麥田  2016/8/27】
【Access示例】--获取表字段数合计  【MDZZ  2017/3/19】
常见问答
技术分类
相关资源
文章搜索
关于作者

半夜罗

文章分类

文章存档

友情链接