代码解读:
1):
Dim cnADO As New ADODB.Connection
Dim rsADO As ADODB.Recordset
Dim strPath, strSQL, strTable As String
strPath = ThisWorkbook.Path & \”\\mydata2.accdb\”
strTable = \”19年销售情况\”
cnADO.Open \”Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\” & strPath
strSQL = \”SELECT * FROM \” & strTable
Set rsADO = New ADODB.Recordset
rsADO.Open strSQL, cnADO, 1, 3
\’汇报给用户记录数
MsgBox \”删除前记录数为:\” & rsADO.RecordCount
Sheets(\”Sheet4\”).Select
仍是用前期绑定的方法建立ADO,打开连接和记录集
2):
t = 2
Do While Cells(t, 1)\”\”
rsADO.MoveFirst
For m = 1 To rsADO.RecordCount
SC = \”\”
GG = \”\”
For i = 0 To rsADO.Fields.Count – 1
If rsADO.Fields(i) = Sheets(\”Sheet4\”).Cells(t, i + 1) Then
SC = SC & \”OK\”
Else
SC = SC & \”NOT\”
End If
Next i
If InStr(SC, \”NOT\”) = 0 Then
rsADO.Delete
rsADO.Update
GG = \”OK\”
End If
rsADO.MoveNext
Next m
If GG\”OK\” Then MsgBox \”第\” & t & \”行数据没有找到,无法删除\”
t = t + 1
Loop
上述代码中,用t记录了当前工作表的行数,一直循环到空值出现,然后,针对每一行的数据,在数据表中校验,如果完成相同,那么删除,如何判断呢,我们用了两个标识,一个是SC,如果每个值都相同,那么SC中不会出现“NOT”,在最后我们判断SC中如果没有“NOT”,那么我们删除,否则向下运行 。而GG的标识则是提示是否有数据没有找到,如果没有找到,那么提示某行没有找到 。
在删除数据的时候用了
rsADO.Delete
rsADO.Update
这是删除某个数据常用的方法 。
3):
\’汇报给用户最后的记录数
MsgBox \”删除后记录数为:\” & rsADO.RecordCount
rsADO.Close
cnADO.Close
Set rsADO = Nothing
Set cnADO = Nothing
在最后提示给用户删除的结果并释放内存 。
下面看我们程序的运行,首先会提示当前数据的数量:
文章插图
文章插图
文章插图
文章插图
如果没有找到数据,则有提示:
文章插图
文章插图
我们再次运行,会提示数据没有找到:
文章插图
文章插图
今日内容回向:
1 如何删除记录集中的数据?
2 如何根据工作表中提供的数据删除数据表中的数据?
本讲内容参考程序文件:VBA与数据库操作(第一册).xlsm
文章插图
文章插图
我20多年的VBA实践经验,全部浓缩在下面的各个教程中:
【数据库如何删除表 数据库删除表记录】
文章插图
文章插图
推荐阅读
- 黑格尔是如何论述艺术美的三种类型,黑格尔对艺术的历史性分类思想?
- 如何调理脾胃虚弱 脾虚怎么调理
- 电脑双系统一键切换教程 电脑双系统如何切换
- 各品牌手机的截屏方法 手机如何截图并保存
- 电脑调节屏幕亮度的方法 如何调节电脑屏幕亮度
- 怎么和女孩子聊天啊 如何和女孩子聊天
- 怎样清除电脑缓存 如何清理电脑缓存数据
- 欠钱不还该如何处理呢 欠钱还不上怎么办
- 编辑pdf文件简单的方法 如何编辑pdf文件内容
- 手机管理路由器方法教程 如何用手机管理路由器