多个连接connection使用ADO写入再读取数据延迟的一种解决办法
时 间:2017-12-22 13:06:03
作 者:老季 ID:64085 城市:南通
摘 要:多个连接connection使用ADO分别写入再读取,存在数据缓存的问题,这里是一种解决办法
正 文:
之前我们公司的资料是用excel做的,随着资料的增加,运行越来越慢,而且同事用的时候,数据录入比较随意,造成很多错误。
9月底,百度了一些资料,决定用access来解决,在淘宝买了本书开始学习access
10月国庆假过后,开始看书,翻了一遍,再看看access自带的帮助文件,发现我白买了,那个书写的真基础,书名是
然后继续百度,找到了access软件网,进而发现了MV软件平台。
因此顺利完成了整个系统的设计.数据可以进行有效性的验证,而且非常方便,比excel填表格快速,还方便多人共享
昨日一个同事抱怨,做完系统的资料,还要把数据导出到我们另外一个打印系统
因此决定在我的系统内解决数据同步的问题,ado连接到SqlServer
结果发现,系统自动获得的连接是后台数据库的,rst在update后
再打开前台数据库的连接去读取保存的查询获得rst2
再把rst2 循环赋值给SqlServer的SQLrst
Dim r As ADODB.Field For Each r In rst2.Fields sql_rst(r.Name) = r.Value Next r
然后在SqlServer中看,发现数据是update之前的
在本网站也找了文章,说就是有这个延迟
[用ADO写入数据时,确实存在延迟问题]
http://www.accessoft.com/article-show.asp?id=10162
照着这篇文章用sleep,可以解决
可是我就想知道有没有其他解决办法
然后百度各种资料,在微软网站发现一篇文章
[How To Synchronize Writes and Reads with the Jet OLE DB Provider and ADO]
解决方法就有了,和大家分享下:
代 码:
Dim JRO As New JRO.JetEngine'先添加这个引用 Dim cnn As ADODB.Connection Set cnn = GetADOConnection()'平台是用这个获得后台数据库连接 Dim cnn2 As ADODB.Connection Set cnn2 = CurrentProject.Connection'这个活动前端的连接 Dim rst As New ADODB.Recordset dim strSQL strSQL="你的sql语句,修改增加等" dim strSQL2 strSQL2="你的sql语句2,查询" Set rst = ado.OpenRecordset(strSQL, adLockOptimistic, cnn) cnn.BeginTrans 'rst.update addnew等操作 cnn.CommitTrans rst.Close JRO.RefreshCache cnn2'刷新 set rst=ado.OpenRecordset(strSQL2, adLockOptimistic, cnn2)'获得新的rst,内容已经更新了
Access软件网官方交流QQ群 (群号:483923997) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access两种方式实现即时更...(03.01)
- Access隐藏与显示lacc...(01.12)
- 【Access高效办公】将每个...(12.23)
- Access21点游戏源代码(12.13)
- 【Access窗体导出Exce...(11.15)
- 【Access开发】Acces...(11.14)
- 通过Access宏录入数据到选...(11.10)
- 用DLOOKUP函数将需求表中...(10.31)
- Access日期区间段查询数据...(10.25)
学习心得
最新文章
- Access快速开发平台--在WI...(03.08)
- 使用SQL语句删除xscj表中学号...(03.08)
- Access快速开发平台进销存教程...(03.07)
- Access快速开发平台--frm...(03.06)
- 【Access删除查询】删除数字最...(03.06)
- Access快速开发平台进销存教程...(03.05)
- Access快速开发平台进销存教程...(03.04)
- Access快速开发平台--IsL...(03.02)
- Access两种方式实现即时更新月...(03.01)
- Access开发的资金管理系统;基...(02.29)