<tr id="sdt5b"><form id="sdt5b"></form></tr>
<delect id="sdt5b"></delect>
    1. <video id="sdt5b"><li id="sdt5b"></li></video>
    2. 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源碼網店

      常見問答:

      技術分類:

      相關資源:

      專欄作家

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