DAO记录集使用的一些技巧
时 间:2010-09-16 14:14:52
作 者:红尘如烟 ID:10768 城市:成都
摘 要:一些DAO记录集的使用技巧
正 文:
ADO虽然是发展的趋势,微软之前也准备将DAO淘汰了,DAO 3.6之后就不再更新,但从Access2007开始又将DAO重新拾起来了,只不过改头换面了一下,变成DAO2了而已,因此DAO短时间内还是淘汰不了,尤其是在Access中,DAO在某些方面的优势依然是ADO比不上的。最近发现一些朋友在使用DAO记录集时,不管是向表中写入数据,还是只是读取数据,都是Set rst=CurrentDb.OpenRecordset("表1"),但实际上这样用效率是很差的,尤其是在数据量比较大的时候,效率问题就显示很重要了,下面整理了一些DAO记录集的使用技巧,只需要稍微改动一下参数就可以实现的.
--------------------------------------------------------------------------------------------------------------------------
打开一个只用于添加记录的记录集(不能读取已有记录)
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("表1", , dbAppendOnly)
--------------------------------------------------------------------------------------------------------------------------
打开一个只读记录集
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("表1", , dbReadOnly)
--------------------------------------------------------------------------------------------------------------------------
打开一个只能向前滚动记录的只读记录集(效率最高,但不能使用MovePrevious和MoveFirst方法)
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("表1", , dbForwardOnly)
--------------------------------------------------------------------------------------------------------------------------
'打开一个数据来源于SQL Server数据库的记录集时要记得用dbSeeChanges参数,尤其是当表中有自动编号字段时是必需的
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("表1", , dbSeeChanges)
--------------------------------------------------------------------------------------------------------------------------
'循环记录集的时候,主要用的有两种:
方式一:
Do Until rst.EOF
ListBox1.Add rst!字段1
rst.MoveNext
Loop
方式二:
Dim intI As Integer
If rst.RecordCount > 0 Then
rst.MoveLast
rst.MoveFirst
For intI = 1 To rst.RecordCount
ListBox1.Add rst!字段1
rst.MoveNext
Next
End If
很多人喜欢用第一种方式,因为使用简单(包括我自己),但第一种的效率要比第二种差些,如果需要大批量操作或者数据量很大的时候,建议大家还是用第二种。
至于在循环的开头先移到记录集结尾,再移到记录集开头的作用时:DAO记录集打开时,如果数据量比较大的时候,存在打开记录集时用RecordCount属性不能正确读取记录数的问题,而要将指针移到最后一条时才能正确读取,再有就是如果你对数据的排序不在意的话,可以不必再将指针移回记录集开头,直接在循环中用MovePrevious移动就行了
注意:上面的示例代码中是将记录源参数设为了表名,但实际上还可以设为查询名称及SQL语句
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)
- Access报价单转订单示例代码(11.08)
- Access系统自带的日期选择器不...(11.08)
- 分享一下Access工程中的acw...(11.07)