Access開發培訓
網站公告
·Access快速平臺QQ群號:156702533    ·Access快速開發平臺下載地址及教程    ·歡迎添加微信交流賬號:AccessoftChu    ·如何快速搜索本站文章|示例|資料    
您的位置: 首頁 > 技術文章 > 同城交流

子窗體合計的計算

時 間:2018-01-29 16:16:22
作 者:半夜羅   ID:36948  城市:成都
摘 要:子窗體合計顯示
正 文:

輸入數據時為了及時反應子窗體的合計,雖然可以用簡單的方法,但速度不太讓人滿意,為此我采用了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群 (群號:198348076)       access源碼網店

最新評論 查看更多評論(1)

2018/1/29 17:00:02大海
謝謝分享,我也不會英文。

發表評論您的評論將提升作者分享的動力!快來評論一下吧!

用戶名:
密 碼:
內 容:
 

常見問答

技術分類

相關資源

關于我們 | 服務條款 | 在線投稿 | 友情鏈接 | 網站統計 | 網站幫助