怎么用ADO删除Access数据库中的指定记录?

yxr_2008 2012-04-26 10:11:24
我是个数据库菜鸟,请大家帮忙:
比如我的数据库文件名是1.mdb,数据表T中有A、B、C、D、E等很多个字段,表中有100条数据,我要删除从第10~20条的数据,这个该怎么操作呢?
我知道的笨方法是delete * from T where A='..' and B='..' and C='..' ..........
但是这样效率非常低,而且写起来很麻烦(因为字段真的很多),不知道更简单有效的方法是什么?
或许可以利用主键来简化一下,但是只能确定表的字段中是有主键的,但是需要用代码来获取哪个是主键。
...全文
316 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kellyicu 2012-04-27
  • 打赏
  • 举报
回复
删除数据总要有条件吧,不然会删掉表里的所有记录。
dim I
select * from T order by id asc
do while not rs.eof
i=i+1
if i>20 then exit do '如果大于20就停止
if i>9 then rs.delete '这里删掉10~20的记录
rs.movenext
loop
rs.close
yxr_2008 2012-04-26
  • 打赏
  • 举报
回复
找到一段代码,可以获取数据库中所有表及其主键:
Private Sub Command1_Click()
Dim adoconn As ADODB.Connection
Dim adors As ADODB.Recordset
Dim sconnectionstring As String
Set adoconn = New ADODB.Connection
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Microsoft Visual Studio\VB98\BIBLIO.MDB"
adoconn.Open sconnectionstring
Set adors = adoconn.OpenSchema(adSchemaPrimaryKeys)
Do Until adors.EOF
Debug.Print "数据表名:;"; adors!table_name;
Debug.Print Tab(30); "主键:"; adors!column_name
adors.MoveNext
Loop
adors.Close
adoconn.Close
End Sub


是不是能把Set adors = adoconn.OpenSchema(adSchemaPrimaryKeys)
这句代码改下,直接获取到表名为T的数据表主键而不用再循环判断了呢?
yxr_2008 2012-04-26
  • 打赏
  • 举报
回复
如果不可以依据位置来删除的话,我的问题就转变成了怎么来获取一个数据表中的字段哪个是主键,我搜索了半天也没有结果,用OpenSchema可以吗?
yxr_2008 2012-04-26
  • 打赏
  • 举报
回复
我是先用listview把表中的所有记录列出来,然后对应删除listview的第10~20条记录
of123 2012-04-26
  • 打赏
  • 举报
回复
第10~20条 是怎么确定的?

Access 表的记录并没有位置关系。
yxr_2008 2012-04-26
  • 打赏
  • 举报
回复
自己顶一下

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧