之前我们公司的资料是用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]
https://support.microsoft.com/zh-cn/help/200300/how-to-synchronize-writes-and-reads-with-the-jet-ole-db-provider-and-a
解决方法就有了,和大家分享下:
代 码:
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,内容已经更新了