<bdo id="0acya"><center id="0acya"></center></bdo>
<table id="0acya"></table><td id="0acya"><table id="0acya"></table></td>
  • <bdo id="0acya"></bdo>
  • Access開發培訓
    網站公告
    ·Access專家課堂QQ群號:151711184    ·Access快速開發平臺下載地址及教程    ·歡迎加入Access專家課堂微信群!    ·如何快速搜索本站文章|示例|資料    
    您的位置: 首頁 > 技術文章 > 同城交流

    子窗體合計的計算

    時 間: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群 (群號:150401543)       Access源碼網店

    常見問答:

    技術分類:

    相關資源:

    專欄作家

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