有劳诸位,为何不能删除记录啊?

morker 2003-04-03 03:24:17
请看下面这段程序,为啥不能删除记录啊。
Set ds = OpenDatabase("abc.mdb")
Set rs = ds.OpenRecordset("a")
rs.Index = "PrimaryKey"
rs.Seek "=", Text1.Text
If rs.NoMatch = False Then
rd.Delete
End If
因为在表a中,主键是自动编号,不是Text1中所显示内容的字段,是不是和这个有关?
再有,我试过findfirst方法,也是不能删除,是不是非用SQL不可啊?
...全文
10 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yqstudentcmx 2003-04-11
你会不会是笔误呀!那该是rs.delete
回复
zhenxizhou 2003-04-05
不会吧。
回复
ulfnboy 2003-04-05
看一下你的記錄集打開方式!!
Recordset.CursorLocation = adUseClient
Recordset.CursorType = adOpenKeyset
Recordset.LockType = adLockOptimistic
回复
morker 2003-04-04
还是编译不过去,谢谢几位,有没有能够达到目的的其他方法?
最好能给出代码,谢谢!
我的目的就是删除在一个数据库中找到的符合某个条件的若干条记录!
回复
chenyu5188 2003-04-04
Set ds = OpenDatabase("abc.mdb")
Set rs = ds.OpenRecordset("a")
rs.Index = "PrimaryKey"
rs.Seek "=", val(trim(Text1.Text))
If rs.bof and rs.eof Then
msgbox "没有找到!!!"
exit sub
else
rs.Delete
End If
回复
morker 2003-04-04
to 大石头,
我的text1.text是文本,PrimaryKey是自动编号,之间不能转换啊!
回复
samuelliushan 2003-04-04
你的PrimaryKey字段应该不是字符型吧,你可以把text1.text转成长整型或整型。
回复
morker 2003-04-04
to 水止如心,
谢谢您的意见,我一定规范自己的语法,也会尽快学习ado。
但是经过您的点拨,问题还是没有解决。
首先,Text1.Text写成 trim(Text1.Text)后,数据类型转换错误。
其次,对您前面的程序调试后,在rs.Seek "=", Text1.Text位置,也出现了数据类型转换错误。
希望您能再帮助我修改一下!
回复
rexyudl 2003-04-04
Dim Rs As New ADODB.Recordset
Dim StrSql As String

StrSql="select * from 表名 where 条件"
If Rs.state = adStateOpen Then Rs.Close
Rs.CursorLocation = adUseClient
Rs.Open StrSql, Conn, adOpenKeyset, adLockPessimistic
If Not (Rs.BOF And Rs.EOF) Then


End If
回复
springlover 2003-04-03
Set ds = OpenDatabase("abc.mdb")
Set rs = ds.OpenRecordset("a")
rs.Index = "PrimaryKey"
rs.Seek "=", Text1.Text
If rs.NoMatch = False Then
rd.Delete
End If
---------------------
试在rd.Delete后加:rd.movefirst
或refrash.
还有给你提两点意见:
1.不要用If rs.NoMatch = False ,要规范,用 If not rs.NoMatch then...
2.Text1.Text最好写成 trim(Text1.Text)
3.也是最重要的一点:尽早放弃DAO,用ADO做跳板,最终学习ADO.NET,这才是你应该走的路!
---------------------
结帖的时候别忘给我加点分啊,呵呵!!


回复
morker 2003-04-03
to 中海,
find会记录指针没错,可是我是在判断nomatch=false的情况下才删除的,不是随便就删除啊!
回复
sxs69 2003-04-03

Do Until rs.NoMatch=true
rs.Delete
rs.Seek "=", Text1.Text
loop
回复
AechoJohn 2003-04-03
up
回复
victorycyz 2003-04-03
find会移动记录指针的,如果找不到,会到eof,这时根本没有记录,当然不能删除了。
所以,应该在查找之前记录当前位置,找不到时再回到这个位置删除。
回复
相关推荐
发帖

1187

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
帖子事件
创建了帖子
2003-04-03 03:24
社区公告
暂无公告