设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: zhufree
打印 上一主题 下一主题

[ADO/DAO] 同样方法操作,速度相差很多

[复制链接]

点击这里给我发消息

11#
发表于 2011-11-2 23:39:25 | 只看该作者
这个代码似乎快一点点
  1. Sub macro2()

  2. Dim arr2()
  3. Dim i As Integer
  4. Dim a As Integer
  5. Dim s As String
  6. Dim e As Double

  7. Dim rs As ADODB.Recordset

  8. CurrentDb.Execute "delete * from 表_调拨明细"

  9. e = Timer
  10. arr2 = CurrentProject.Connection.Execute("SELECT * FROM 表_指令调拨表 order by 流水号").getrows
  11. a = UBound(arr2, 2)

  12. Set rs = New ADODB.Recordset
  13. sql = "select * from 表_调拨明细"

  14. With rs
  15.     .Open sql, CurrentProject.Connection, 3, 3
  16.     For i = 0 To a
  17.         If i = 0 Then
  18.             s = arr2(1, i) & arr2(2, i) & arr2(3, i)
  19.         ElseIf arr2(0, i) = arr2(0, i - 1) Then
  20.             s = s & "," & arr2(1, i) & arr2(2, i) & arr2(3, i)
  21.         ElseIf arr2(0, i) <> arr2(0, i - 1) Then
  22.             .AddNew
  23.                 rs("流水号") = arr2(0, i - 1)
  24.                 rs("调拨明细") = s
  25.            .Update
  26.            s = arr2(1, i) & arr2(2, i) & arr2(3, i)
  27.         End If
  28.     Next
  29.      .AddNew
  30.          rs("流水号") = arr2(0, a)
  31.          rs("调拨明细") = s
  32.     .Update

  33.     MsgBox a + 1 & " " & Timer - e
  34. End With

  35. End Sub
复制代码

评分

参与人数 1经验 +3 收起 理由
zhufree + 3 很给力!

查看全部评分

12#
 楼主| 发表于 2011-11-3 06:52:10 | 只看该作者
t小宝 发表于 2011-11-2 23:39
这个代码似乎快一点点

数组操作看起来更易懂
13#
发表于 2012-1-21 09:48:41 | 只看该作者
roych 发表于 2011-11-2 22:58
直接执行查询也不见得很慢。就本例而言,在我的系统里测试,似乎是直接执行追加查询比字典功能或者ADO都要快 ...

学习下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-10 07:30 , Processed in 0.096146 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表