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

DAO計算累計

時 間:2019-04-15 15:48:23
作 者:半夜羅   ID:36948  城市:成都
摘 要:累計
正 文:

在實際中,經常用到逐行累計,有單一字段的累計,有多字段累計,在查詢中計算不占資源,但數據量大時,速度極慢,并且會出現文本框獲得焦點后其值也會改變的情況,在表中計算又會遇到一個系統中有多個類似的表,每個表的計算基本類似,總想用函數來完成,經過多次失敗,多次在本站請教,終于成功寫出了這個函數,現分享給初學Access的

Function 分組累計余額(str表名稱 As String, _
                str序號 As String, _
                str分組 As String, _
                str借方 As String, _
                str貸方 As String, _
                str余額 As String)
'調用:call 分組累計余額("表名稱","序號字段","分組字段","借方","貸方","余額")
'分組:分組字段,文本型
'序號:數字型
'借方、貸方:文本與數字都可
    Dim rst As DAO.Recordset
    Dim strSql As String
    Dim f As String
    Dim y As Double
    strSql = "Select * FROM " & str表名稱
    strSql = strSql & " orDER BY " & str分組 & "," & str序號 & ";"
    Set rst = CurrentDb.OpenRecordset(strSql, dbOpenDynaset)
    Do While Not rst.EOF
        rst.Edit
        If f <> rst(str分組) Then
            f = rst(str分組)
            y = 0
        End If
        rst(str余額) = Nz(rst(str借方), 0) - Nz(rst(str貸方), 0) + y
        y = rst(str余額)
        rst.Update
        rst.MoveNext
    Loop
    rst.Close
    Set rst = Nothing
End Function


Function 不分組累計余額(str表名稱 As String, _
                str序號 As String, _
                str借方 As String, _
                str貸方 As String, _
                str余額 As String)
'調用:call 不分組累計余額("測試表","序號","借方","貸方","余額")
'序號:數字型
'借方、貸方:文本與數字都可
    Dim rst As DAO.Recordset
    Dim strSql As String
    Dim f As String
    Dim y As Double
    strSql = "Select * FROM " & str表名稱
    strSql = strSql & " orDER BY " & str序號 & ";"
    Set rst = CurrentDb.OpenRecordset(strSql, dbOpenDynaset)
    Do While Not rst.EOF
        rst.Edit
        rst(str余額) = Nz(rst(str借方), 0) - Nz(rst(str貸方), 0) + y
        y = rst(str余額)
        rst.Update
        rst.MoveNext
    Loop
    rst.Close
    Set rst = Nothing
End Function


Function 分組累計字段(str表名稱 As String, _
                str序號 As String, _
                str分組 As String, _
                str金額 As String)
'調用:call 分組累計字段("表名稱","序號字段","分組字段","金額字段")
'分組:分組字段,文本型
'序號:數字型
    Dim rst As DAO.Recordset
    Dim strSql As String
    Dim f As String
    Dim y As Double
    strSql = "Select * FROM " & str表名稱
    strSql = strSql & " orDER BY " & str分組 & "," & str序號 & ";"
    Set rst = CurrentDb.OpenRecordset(strSql, dbOpenDynaset)
    Do While Not rst.EOF
        rst.Edit
        If f <> rst(str分組) Then
            f = rst(str分組)
            y = 0
        End If
        rst(str金額) = Nz(rst(str金額)) + y
        y = rst(str金額)
        rst.Update
        rst.MoveNext
    Loop
    rst.Close
    Set rst = Nothing
End Function


Function 不分組累計字段(str表名稱 As String, _
                str序號 As String, _
                str金額 As String)
'調用:call 不分組累計字段("表名稱","序號字段","金額")
'序號:數字型
    Dim rst As DAO.Recordset
    Dim strSql As String
    Dim y As Double
    strSql = "Select * FROM " & str表名稱
    strSql = strSql & " orDER BY " & str序號 & ";"
    Set rst = CurrentDb.OpenRecordset(strSql, dbOpenDynaset)
    y = 0
    Do While Not rst.EOF
        rst.Edit
        rst(str金額) = rst(str金額) + y
        y = rst(str金額)
        rst.Update
        rst.MoveNext
    Loop
    rst.Close
    Set rst = Nothing
End Function點擊下載此附件



Access軟件網QQ交流群 (群號:198347485)       access源碼網店

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

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

用戶名:
密 碼:
內 容:
 

常見問答

技術分類

相關資源

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