值50分的简单问题

xinjs 2003-04-09 01:35:15
我是新手。
有这么一个问题,请教高手!
有两个mdb的表,分别为temp和temp1,需要首先将temp内容清空,然后将temp1内的记录导入temp中,该操作需要多次重复执行(表中的记录不变)。以下代码执行有时成功,有时出错。错误信息是说不能更新,某某机器上的用户“admin”锁定了表。但是,机器是在单机运行,可以肯定没有其它用户打开了表。
adotemp.Requery
If adotemp.RecordCount > 0 Then
adotemp.MoveFirst
Do Until adotemp.EOF
adotemp.Delete
adotemp.MoveNext
Loop
End If
adotemp1.Requery
If adotemp1.RecordCount > 0 Then
adotemp1.MoveFirst
Do Until adotemp1.EOF
adotemp.AddNew
For i = 1 To 20
adotemp(i) = adotemp1(i)
Next i
adotemp.Update
adotemp1.MoveNext
Loop
End If
...全文
11 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
forrestsun 2003-04-10
这样写两条语句
delete * from temp
insert into temp select * from temp1
用ADO调用就可以了
在中间做一些error的处理
回复
xinjs 2003-04-10
谢谢各位。50分怎么分呀?
回复
ayine 2003-04-09
同意bhhxd(天外来客)的方法,如果用你的方法,一是占用资源,二是太浪费时间了
回复
twinking 2003-04-09
对指针进行操作是比较麻烦
不如象楼上兄弟说的
用SQL来操作
回复
bhhxd 2003-04-09
干吗这么烦呢?
这样做不时又快又好吗?
Dim comm As New ADODB.Command
Dim cn As New ADODB.Connection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=...\db1.mdb;Persist Security Info=False"
cn.Open
comm.ActiveConnection = cn
comm.CommandText = "delete * from b"
comm.Execute
comm.CommandText = "insert into b select * from a"
comm.Execute
回复
xinjs 2003-04-09
那么,我用一句adotemp.requery不就可以解决问题了吗?
到底行不行?
谢谢啦。
回复
xinjs 2003-04-09
我试了。
当运行到 adotemp.addnew时,提示错误,因为已经有set adotemp=nothing的语句了。
我只好在set adotemp=nothing后面加上将adotemp重新打开的语句。
问题是:
原来我的语句中有adotemp.requery,这条语句作用不是将adotemp关闭,然后又打开吗?
回复
饮水需思源 2003-04-09
adotemp.Requery
If adotemp.RecordCount > 0 Then
adotemp.MoveFirst
Do Until adotemp.EOF
adotemp.Delete
adotemp.MoveNext
Loop
End If

set adotemp=nothing '加上这句

adotemp1.Requery
If adotemp1.RecordCount > 0 Then
adotemp1.MoveFirst
Do Until adotemp1.EOF
adotemp.AddNew
For i = 1 To 20
adotemp(i) = adotemp1(i)
Next i
adotemp.Update
adotemp1.MoveNext
Loop
End If
回复
DaiLM 2003-04-09
每一次操作结束后将记录集关闭试试
回复
相关推荐
发帖

1187

社区成员

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