余额逐行累计方法分享
上一篇 / 下一篇 2006-12-27 15:38:02 / 个人分类:ACCESS学习
查看( 452 ) /
评论( 2 )
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)
