【access小品】三种删除记录方法的比较
时 间:2011-05-30 08:31:14
作 者:煮江品茶 ID:10802 城市:武汉
摘 要:三种删除记录方法的比较
正 文:
版友123xiaoniu同志问用ADO与SQL两种方式删除记录的利弊问题,可能他觉得问题太简单,在没有得到答案的情况下,就关闭了帖子。实际上这个问题还是比较复杂的,我曾经为一个删除语句折腾了好几个小时。就这个问题把我的经验告诉初学者版友们,供同志们参考。有些问题其中的缘由我还说不大清楚,不过我觉得从运用的角度能得到处理就可以了。
一、三种删除方法:
方法一:
Sub 删除1(ssql As String)
'示例:call 删除1("delete * from 订单明细表 where 订单ID=" & me.订单ID.value)
DoCmd.SetWarnings False
DoCmd.RunSQL ssql
End Sub
方法二:
Sub 删除2(ssql As String)
'示例:call 删除2("delete * from 订单明细表 where 订单ID=" & me.订单ID.value)
CurrentDb.Execute ssql
End Sub
方法三:
Sub 删除3(ssql As String)
'示例:call 删除3("select * from 订单明细表 where 订单ID=" & me.订单ID.value)
Dim rs As New ADODB.Recordset
Dim i As Long
rs.Open ssql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
If rs.RecordCount > 0 Then
for i=1 to rs.RecordCount
rs.Delete
rs.Update
rs.MoveNext
next
End If
rs.Close
Set rs = Nothing
End Sub
二、三种方法的使用条件:
方法三在记录数量特别大的时候会跳出错误,我曾经在做《公交查询系统》时,打算删除一个几十万条记录的表,出现跳错的情况。同时记录量特别大的时候,删除的速度也比较慢。
方法二和方法三在有些情况下不能执行。比如通过查询视图建立一个删除查询,这个删除查询中直接用到窗体变量(形如:forms!主窗体!订单ID),此种情况下方法二和方法三有时候不能执行。
方法一比较皮实,只要SQL查询是可以执行的,都可以正确的做出删除。
三、三种方法的灵活运用:
三种方法是可以交替使用的,在删除的记录量不大的情况下,效果没有什么大的差异。从编程的效率来讲,方法二要省事一些。一般在没有用到ADO记录集的情况下,用方法二相对简单一些。如果编程中用到了ADO记录集,特别是记录集的SQL语句比较复杂的情况下,可以采用方法三,这样可以避免写两个复杂的SQL语句。
在用方法二或者方法三时,如果出现莫名其妙的不能删除的情况,可能不是SQL错误,这时候可用方法一试试。
Access软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 按回车键后光标移动到下一条记录...(02.12)
- 【Access Dsum示例】...(02.07)
- Access对子窗体的数据进行...(02.05)
- 【Access高效办公】上月累...(01.09)
- 【Access高效办公】上月累...(01.06)
- Inputbox输入密码打开查...(12.23)
- 【Access Dsum示例】...(12.16)
- Inputbox输入密码打开窗...(12.13)
- 【Access DCount示...(12.02)

学习心得
最新文章
- 用Access查询语句如何得到前3...(02.17)
- Access快速开发平台--导入导...(02.14)
- 按回车键后光标移动到下一条记录的V...(02.12)
- Access快速开发平台--要实现...(02.10)
- Access快速开发平台--让Pe...(02.08)
- 【Access Dsum示例】用D...(02.07)
- Access对子窗体的数据进行平均...(02.05)
- Access快速开发平台附件上传,...(01.18)
- 【IIF函数示例】用iif函数判断...(01.18)
- Access快速开发平台--如何获...(01.17)