Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-教程

【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群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助