<track id="9vv7v"><strike id="9vv7v"><rp id="9vv7v"></rp></strike></track>
<pre id="9vv7v"></pre>
    
    

        
        

              <pre id="9vv7v"><strike id="9vv7v"></strike></pre>

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

              常見問答:

              技術分類:

              相關資源:

              專欄作家

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