access数据延迟问题,高手进来看看。

okwang1979 2006-03-23 01:44:56
有一张表大概1万多条记录,首先插入,之后,马上点击查询按钮,可是这个记录不能备查询出来。
望解决。
con.execute("insert t1 values(10001)")
set rs=con.execute("select max(c1) as c1 from t1 ")
i=rs("c1")
msgbox(i)

如果点击查询按钮速度快,输出为10000
备注:我的access数据库的内容当让不能象上表那么简单,意识查不多了
...全文
145 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
of123 2006-03-24
  • 打赏
  • 举报
回复
由于你的记录太多,更新时会引起虚拟内存的磁盘交换,因此更新的进度会比代码运行速度慢。 SQL 语句的执行是将 SQL 语句发送到数据库引擎就算完成。

解决方法:
1 使用记录集对象来插入记录:
con.curserlocation = aduseclient
rs.open "select * from t1", con
rs.addnew
rs!c1 = 10001
rs.update
rs.bookmark = rs.lastmodified

2 使用带有事件的 con
Dim WithEvents con as ADODB.Connection '必须在通用段中声明
Dim done As Boolean

Private Sub con_ExecuteComplete(ByVal RecordsAffected As Long, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)
done = True
End Sub

Private Sub con_WillExecute(Source As String, CursorType As ADODB.CursorTypeEnum, LockType As ADODB.LockTypeEnum, Options As Long, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)
done = False
End Sub

你的代码改为:
con.execute("insert t1 values(10001)")
Do Until done
DoEvents
Loop
set rs=con.execute("select max(c1) as c1 from t1 ")
i=rs("c1")
msgbox(i)
射天狼 2006-03-24
  • 打赏
  • 举报
回复
有可能会出现延迟,你统计难道非要这么精确吗?


╭════════════════════════════╮
║                            ║
║  免费的学习、交流、源码、工具网站,欢迎大家访问!  ║
║  http://www.j2soft.cn/                ║
╰════════════════════════════╯
watt 2006-03-23
  • 打赏
  • 举报
回复
最好使用事务处理,能保证数据的一致性。
con.execute("insert t1 values(10001)")
完成后Commit,
然后再查询
gjianpro 2006-03-23
  • 打赏
  • 举报
回复
楼上的使用doevents,是使计算机完成doevents之前的程序语句,然后再执行doevents语句之后的程序语句,可以解决问题..
gjianpro 2006-03-23
  • 打赏
  • 举报
回复
应用程序和数据库之间的I/O是需要n个机器周期时间的.
lz的问题只能通过控制数据库的读写来解决.
DengXingJie 2006-03-23
  • 打赏
  • 举报
回复
con.execute("insert t1 values(10001)")
doevents
set rs=con.execute("select max(c1) as c1 from t1 ")
i=rs("c1")
msgbox(i)

1,217

社区成员

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

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