求助VB+Access删除一条记录后需要等一段时间才能看到修改结果,怎么回事啊?

VBvsVC 2006-07-27 09:54:54
我用msflexgrid显示数据,然后界面上有单独的按钮来控制显示,删除记录的代码如下:

Dim db As Database
Dim rs As Recordset
strMysql = "DELETE 某个记录 FROM 某个表 WHERE 条件"
Set db = DBEngine.OpenDatabase(x.mdb)
db.Execute strMysql
db.Close
Set db = Nothing
上边的删除完成后,就点击按钮用“SELECT * FROM 某个表”来显示剩下的记录,
Dim db As Database
Dim rs As Recordset
strMysql = "SELECT * FROM 某个表"
Set db = DBEngine.OpenDatabase(x.mdb)
Set rs = db.OpenRecordset(strMysql)
msflexgrid.textmatrix(1,1)=rs.fileds(0).value
.....
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
可是会发现,刚才删除的那条记录有时候会还在,需要再点击一次或者几次这个按钮才能刷新过来,可有的时候一次就刷新过来了,不知道这是怎么回事?是我在删除以后哪里没有刷新么?
删除是这种情况,如果用语句修改某个记录以后也会有这种情况,需要点按钮刷新几次才能看到更改后的结果,可有的时候只刷新一次就看到了,不清楚怎么回事?
希望有高手可以指教一下啊,我在北京,方便的话我可以去找您当面请教,不胜感谢。
...全文
320 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
VBvsVC 2007-01-16
  • 打赏
  • 举报
回复
ado好像可以,抱歉这么久才结贴
VBvsVC 2006-07-28
  • 打赏
  • 举报
回复
好像不是这个的问题,我试试用ADO做吧,看怎么样
VBvsVC 2006-07-28
  • 打赏
  • 举报
回复
楼上的你是说db在整个运行过程中不要频繁建立和关闭是么?
of123 2006-07-28
  • 打赏
  • 举报
回复
不要总是从磁盘中读取文件数据,磁盘缓存会有延迟。

Dim db As Database
Dim rs As Recordset

Private Sub Form_Load()
Set db = DBEngine.OpenDatabase(x.mdb)
End Sub

Private Sub Form_Unload()
db.Close
Set db = Nothing
End Sub

Private Sub cmdDel_Cllick()
strMysql = "DELETE 某个记录 FROM 某个表 WHERE 条件"
db.Execute strMysql
End If

Private Sub cmdSelect_Click()
strMysql = "SELECT * FROM 某个表"
Set rs = db.OpenRecordset(strMysql)
msflexgrid.textmatrix(1,1)=rs.fileds(0).value
.....
rs.Close
Set rs = Nothing
End Sub

这样就会从内存缓冲区直接读数据了。
VBvsVC 2006-07-28
  • 打赏
  • 举报
回复
谢谢楼上的,我试试看吧先。这问题真是有点莫名其妙
tripman 2006-07-28
  • 打赏
  • 举报
回复
'换ADO方式试试
'引用Micrsoft Active Data Object 2.6 Library

'删除记录
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;" & "Data Source = E:\db1.mdb;" & _
"mode=ReadWrite"
cnn.Open
strMysql = "DELETE 某个记录 FROM 某个表 WHERE 条件"
cnn.Execute strMysql
cnn.Close

'刷新记录
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;" & "Data Source = E:\db1.mdb;" & _
"mode=ReadWrite"
cnn.Open
strMysql = "SELECT * FROM 某个表"
rs.Open strMysql, cnn, adOpenKeyset, adLockOptimistic
MSFlexGrid1.TextMatrix(1, 1) = rs(0)



VBvsVC 2006-07-28
  • 打赏
  • 举报
回复
楼上的这样当然不成啊
mustudent 2006-07-28
  • 打赏
  • 举报
回复
不行就Unload了Form然后再载入
VBvsVC 2006-07-28
  • 打赏
  • 举报
回复
救命呐,很急啊这个问题
VBvsVC 2006-07-27
  • 打赏
  • 举报
回复
还有,表中的记录量不算大,100行左右的量
VBvsVC 2006-07-27
  • 打赏
  • 举报
回复
楼上的楼上,在哪里refresh阿?我删除完了后使用db.Recordsets.Refresh也还是不行啊
yangao 2006-07-27
  • 打赏
  • 举报
回复
偶以前碰到国进行大批量删除再插入时有时间差
迈克揉索芙特 2006-07-27
  • 打赏
  • 举报
回复
refresh
VBvsVC 2006-07-27
  • 打赏
  • 举报
回复
楼上的,我试了还是不行啊。你怀疑是msflexgrid的显示问题么?我觉得好像不是这个问题,我感觉像是我向access发出修改指令后,access执行完毕需要一段时间,可又觉得这样解释不通。
mustudent 2006-07-27
  • 打赏
  • 举报
回复
Dim db As Database
Dim rs As Recordset
strMysql = "DELETE 某个记录 FROM 某个表 WHERE 条件"
Set db = DBEngine.OpenDatabase(x.mdb)
db.Execute strMysql
db.Close
Set db = Nothing

msflexgrid.Clear

上边的删除完成后,就点击按钮用“SELECT * FROM 某个表”来显示剩下的记录,
Dim db As Database
Dim rs As Recordset
strMysql = "SELECT * FROM 某个表"
Set db = DBEngine.OpenDatabase(x.mdb)
Set rs = db.OpenRecordset(strMysql)
msflexgrid.textmatrix(1,1)=rs.fileds(0).value
.....
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing


添加msflexgrid.Clear
先清空msflexgrid

1,216

社区成员

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

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