设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 3414|回复: 12
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2011-11-1 13:22:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
同样的AD0程序,123文件记录数不到1W条,但操作要10多秒,
db1文件记录数20多w条,操作只要3秒左右。不知道哪边出现了问题,请指教!谢谢1

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2011-11-1 13:52:15 | 只看该作者
123循环的记录集:"select 表_指令调拨表.流水号 from 表_指令调拨表 group by 表_指令调拨表.流水号 order by 表_指令调拨表.流水号"
有5737条记录,
db1循环的记录集:“select tbl.pycode from tbl group by tbl.pycode order by tbl.pycode”
只有484条记录。
谁快谁慢不就很清楚了。
3#
发表于 2011-11-1 15:48:53 | 只看该作者
t小宝 发表于 2011-11-1 13:52
123循环的记录集:"select 表_指令调拨表.流水号 from 表_指令调拨表 group by 表_指令调拨表.流水号 order ...

小宝老师好厉害
4#
 楼主| 发表于 2011-11-1 16:33:20 | 只看该作者
t小宝 发表于 2011-11-1 13:52
123循环的记录集:"select 表_指令调拨表.流水号 from 表_指令调拨表 group by 表_指令调拨表.流水号 order ...

T小宝解释的是。
但想请问下,这个速度如何可以再提升下?谢谢

点击这里给我发消息

5#
发表于 2011-11-1 20:58:55 | 只看该作者
使用这个函数,速度可以提高大概三分之一。
合并记录为字符串的一个函数
代码如下:
  1. Sub CMDPRINT_Click()

  2.     CurrentDb.Execute "delete * from 表_调拨明细"
  3.     t = Timer
  4.     CurrentDb.Execute "INSERT INTO 表_调拨明细( 流水号, 调拨明细 ) SELECT 表_指令调拨表.流水号, " & _
  5.         "DMerge('调出单号 & 半成品数量 & 备注','表_指令调拨表','流水号=' & [流水号] & '',',') " & _
  6.         " FROM 表_指令调拨表 GROUP BY 流水号 ORDER BY 流水号"

  7.     MsgBox "秏时: " & Timer - t & " 秒"

  8. End Sub

  9. Public Function DMerge(Exps As String, Domain As String, _
  10.     Optional Criteria As String, Optional Separator As String = ";") As String
  11.    
  12. '函数功能:  合并指定记录集指定字段值为一个字符串
  13. '参数说明:
  14. '  expr :         要合并的字段
  15. '  domain :     来源表或查询
  16. '  criteria :      可选,限制记录的条件表达式
  17. '  Separator : 可选,合并记录的分隔符,默认为分号(;)
  18. '
  19. '调用示例:  DMerge("姓名","人员表","性别='" & [性别] & "'",Chr(13) & Chr(10))
  20. '                以上示例在查询中,使用了换行分隔符,返回换行显示的姓名
  21. '作      者:  t小雨
  22. '创建时间:  2009/11/25

  23. On Error Resume Next
  24.     Dim rst As New ADODB.Recordset
  25.     Dim strSql As String
  26.    
  27.     strSql = "Select " & Exps & " From " & Domain
  28.     If Criteria <> "" Then strSql = strSql & " Where " & Criteria
  29.     rst.Open strSql, CurrentProject.Connection, adOpenStatic, adLockReadOnly, adCmdText
  30.    
  31.     If Not rst.EOF Then DMerge = rst.GetString(adClipString, , , Separator)
  32.     rst.Close
  33.     Set rst = Nothing
  34. End Function

复制代码
6#
 楼主| 发表于 2011-11-2 11:34:41 | 只看该作者
t小宝 发表于 2011-11-1 20:58
使用这个函数,速度可以提高大概三分之一。
合并记录为字符串的一个函数
代码如下:

谢谢,速度是有提高约1/3

在EXCEL中字典速度一秒都不到,ACCESS中是否有类似功能

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
7#
发表于 2011-11-2 21:23:31 | 只看该作者
Access也有字典功能。。。红尘写过实例。搜索下?
8#
 楼主| 发表于 2011-11-2 21:45:56 | 只看该作者
roych 发表于 2011-11-2 21:23
Access也有字典功能。。。红尘写过实例。搜索下?

我在测试,谢谢
9#
 楼主| 发表于 2011-11-2 21:56:47 | 只看该作者
roych 发表于 2011-11-2 21:23
Access也有字典功能。。。红尘写过实例。搜索下?

凑写了一个,一二秒时间能计算出。还得稍完善下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
10#
发表于 2011-11-2 22:58:05 | 只看该作者
直接执行查询也不见得很慢。就本例而言,在我的系统里测试,似乎是直接执行追加查询比字典功能或者ADO都要快些许(其中ADO更慢些)。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点评

楼主是要合并相同流水号的记录后再追加的  发表于 2011-11-2 23:40
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 20:49 , Processed in 0.094676 second(s), 38 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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