Office中国论坛/Access中国论坛

标题: 有没有更快一点的办法? [打印本页]

作者: MsAccess    时间: 2002-5-10 03:59
标题: 有没有更快一点的办法?
详见附件。
过程说明: 如借方某一金额与贷方某一金额相同,则两笔记录同时勾销。只能一对一进行勾销。
请教:1.有没有更快一点(或更简洁)的方法?
      2.如何用最简单的代码将多个表导出到同一Excel文件的不同工作簿中?文件下载
作者: ganrong    时间: 2002-5-10 04:12
提示: 作者被禁止或删除 内容自动屏蔽
作者: AlexLiu    时间: 2002-5-11 08:00
标题: 快速勾销方法
Sub EditX()

    Dim dbs As Database
    Dim rst1, rst2 As DAO.Recordset
   
    Set dbs = CurrentDb
    Set rst1 = dbs.OpenRecordset("SELECT 借方, 是否勾销 FROM UF WHERE (借方<>0) ORDER BY 借方", dbOpenDynaset)
    Set rst2 = dbs.OpenRecordset("SELECT 贷方, 是否勾销 FROM UF WHERE (贷方<>0) ORDER BY 贷方", dbOpenDynaset)
   
    rst1.MoveFirst
    rst2.MoveFirst
   
    Do

        Select Case (rst1!借方 - rst2!贷方)
            Case Is = 0 '两边相等
                rst1.Edit
                rst1!是否勾销 = True          '借方做勾销记号
                rst1.Update
                rst2.Edit
                rst2!是否勾销 = True          '贷方做勾销记号
                rst2.Update
               
                '两个指针都向后移动
                If Not rst1.EOF Then rst1.MoveNext
                If Not rst2.EOF Then rst2.MoveNext
               
            Case Is < 0 '借方数字较小
                '借方指针向后移动
                If Not rst1.EOF Then rst1.MoveNext
               
            Case Is > 0 '贷方数字较小
                '贷方指针向后移动
                If Not rst2.EOF Then rst2.MoveNext
        End Select
        
    Loop Until rst1.EOF Or rst2.EOF '任一记录集到达末尾则不再循环

   Set rst1 = Nothing
   Set rst2 = Nothing
   'dbs.Close

End Sub

作者: xinbao    时间: 2002-5-11 08:08
妙,高手就是高手,程序就是招牌,难怪站长对你推崇备至!
作者: MsAccess    时间: 2002-5-12 17:33
AlexLiu 的思维不错。多谢。
还有一点本人上次未说清,就是时间靠近者优先勾销。
再就是频繁判断是否到表的最后也会影响执行的速度。

欢迎继续交流指教。
作者: AlexLiu    时间: 2002-5-13 22:12
再就是频繁判断是否到表的最后也会影响执行的速度。

是的,我当时作的时候没有测试,应该是用ON ERROR来处理才对。
作者: 大熊    时间: 2002-5-16 06:23
ALEX贴出来东西看起来很方便,注释详细.




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3