余额逐行累计方法分享

上一篇 / 下一篇  2006-12-27 15:38:02 / 个人分类:ACCESS学习

查看( 452 ) / 评论( 2 )
今天遇到这么一种情况, 表1编号客户名金额时间
1 A 100 2006-1-1
2 A 200 2006-1-21
7 A 1000 2006-2-1
3 A 300 2006-2-1
8 A -500 2006-5-1
6 A 500 2006-8-1
5 A -100 2006-10-1
9 A -1000 2006-10-10
4 A 200 2006-11-1
需要直接从查询中列出余额明细,本人对ACCESS根本就没有入门,只会基本一些查询,对此问题苦恼半天,

后在ACCESS中国上找到类似例子可以解决此类问题,相信不少初学朋友也会遇到,在此特与大家分享一下找到的例子,

也是方便自己日后查询需要,

[ 本帖最后由 -无相- 于 2006-12-27 15:20 编辑 ]

通过ID号判断.rar
(2006-12-27 15:18:24, Size: 10.7 kB, Downloads: 0)


通过ID号判断用全局变量.rar
(2006-12-27 15:18:24, Size: 16.9 kB, Downloads: 0)


通过日期判断用DSUM.rar
(2006-12-27 15:18:24, Size: 22.8 kB, Downloads: 0)


TAG: ACCESS学习

-无相-的个人空间 -无相- 发布于2006-12-27 15:22:54
还有用ADO的,本人不会,没有学过ADO,但也给大家贴出来。同样来自ACCESS中国的fan0217提供


用ADO实现的,数据量太大时执行效率不高。 '===============================================================================
'-函数名称:     计算余额
'-功能描述:     计算余额
'-输入参数说明: 参数1: 必选 str表 As String   计算余额的表名称
'               参数2: 必选 str日期 As String 排序的字段名称
'               参数3: 必选 str借方 As String 计算余额增加方字段名称,字段类型:数字
'               参数4: 必选 str贷方 As String 计算余额减少方字段名称,字段类型:数字
'               参数5: 必选 str余额 As String 计算的余额字段,字段类型:数字
'-返回参数说明: 计算成功返回True;计算失败返回False
'-使用语法示例: bln = 计算余额("银行存款", "日期", "存入", "提款", "余额")
'-参考:
'-使用注意:     使用本函数时请保留函数信息内容,需要引用ADO
'-兼容性:       2000,XP,2003
'-作者:         fan0217@163.com
'-更新日期:    2006-06-02
'===============================================================================
Function 计算余额(str表 As String, str日期 As String, str借方 As String, str贷方 As String, str余额 As String) As Boolean
On Error GoTo Err_计算余额
Dim conn As New ADODB.Connection
Dim rs As New Recordset
Dim strSQL As String
Dim dblBalance As Double    Set conn = CurrentProject.Connection
   
    strSQL = "SELECT * FROM " & str表
    strSQL = strSQL & " ORDER BY " & str日期 & ";"

   rs.Open strSQL, conn, adOpenKeyset, adLockOptimistic
   
   dblBalance = 0
   
   Do While Not rs.EOF
        rs(str余额) = Nz(rs(str借方), 0) - Nz(rs(str贷方), 0) + dblBalance
        dblBalance = rs(str余额)
        rs.Update
        rs.MoveNext
    Loop
   
    计算余额 = True
    rs.Close
    Set rs = Nothing
    Set conn = Nothing
   
Exit_计算余额:
    Exit Function Err_计算余额:
    计算余额 = False
    Set rs = Nothing
    Set conn = Nothing
    MsgBox Err.Description
    Resume Exit_计算余额 End Function
-无相-的个人空间 -无相- 发布于2006-12-28 17:16:55
如果没有ID号的情况,而且一天又有多笔录除了用上面的ADO方法增加余额
这里还有一个例子是自动增加序号,且不会跳号,(来自OFFICE中国  一点通)

原贴地址http://bbs.office-cn.net/dispbbs.asp?BoardID=150&replyID=165622&id=33467&skin=0

原理跟上面差不多

Private Sub Command3_Click()
Dim rs As Recordset, y As Double  '声明变量及设定参数

  Set rs = New ADODB.Recordset  '初始化参数
   
    rs.ActiveConnection = CurrentProject.Connection  '把 rs 参数设定并连接
  
    rs.Open "排序查询", , adOpenKeyset, adLockOptimistic '使用一个普通查询先对数据按要求排序
      
      
    rs.MoveFirst  '指针指到第一条记录
     
    y = 0  '初始化排序
   
Do Until rs.EOF = True  '对数据循环计算,直到最后一条记录为止
  
    rs!自排序号 = 1 + y
   
    rs.Update '将排序结果存放到表中
   
    y = rs!自排序号 '重新设定 y 值
   
    rs.MoveNext '指针跳到下一条记录

Loop  '继续:  Do Until rs.EOF = True
    rs.Close '计算完毕清除内存记录
    Set rs = Nothing

Me.Child0.Requery  '刷新子窗体
End Sub

[ 本帖最后由 -无相- 于 2006-12-28 18:28 编辑 ]

ADO代码排序.rar
(2006-12-28 17:16:55, Size: 15.2 KB, Downloads: 24)

我来说两句

(可选)

Open Toolbar