VB 关于临界数据共享的问题
Access数据库有个设置信息表,表的字段为有这么几项记录编号,地址编号,地址名称,设定值,屏蔽值值,计数器(都是100)。 这表的数据都是自己添加的,现在呢我想要实现这么一个功能,串口来一个相同的地址设置表对应的计数器要重置为100,同时我的timer里面实现计数器这一列所有的100都要减一,程序其他功能都实现了,就这部分有问题,下面我贴出部分程序:
'1、根据地址信息更新设置信息表的计数器
Call UpdateTimer(Adodc5)
这句在oncomm里面,调用module2里面的函数
Public Sub UpdateTimer(tAdodc As Adodc) '更新设置信息表的计数器
Dim tSqlstr As String
tSqlstr = "select * from 设置信息表 where 地址编号= '" & gAddrNumStr & " ' "
tAdodc.CommandType = adCmdText
tAdodc.RecordSource = tSqlstr
tAdodc.Refresh
If tAdodc.Recordset.RecordCount > 0 Then
tAdodc.Recordset.Fields(5) = 100 '更新计数器
tAdodc.Recordset.Update
End If
End Sub
下面贴出timer里面部分程序:
Adodc7.CommandType = adCmdText
Adodc7.RecordSource = "Select * from 设置信息表"
Adodc7.Refresh
If Adodc7.Recordset.RecordCount > 0 Then
Adodc7.Recordset.MoveFirst
End If
For i = 1 To Adodc7.Recordset.RecordCount
Adodc7.Recordset.Fields(5) = Adodc7.Recordset.Fields(5) - 1
Adodc7.Recordset.MoveNext
Next i
运行显示无法更新定位行,一些值可能在最后一次读取后已更改,注:红色部分是串口数据处理后的地址编号
VB??串口开发
[解决办法]
本帖最后由 bcrun 于 2013-05-27 10:37:10 编辑 这个是个蛋疼的使用方式
试试下面代码
If tAdodc.Recordset.RecordCount > 0 Then
tAdodc.Recordset.Fields(5) = 100 '更新计数器
tAdodc.Recordset.Update
tAdodc.Recordset.requery
End If
If tAdodc.Recordset.RecordCount > 0 Then
For i = 1 To Adodc7.Recordset.RecordCount '加上循环
tAdodc.Recordset.Fields(5) = 100
tAdodc.Recordset.Update
Next i '加上循环
End If
For i = 1 To Adodc7.Recordset.RecordCount
Adodc7.Recordset.Fields(5) = Adodc7.Recordset.Fields(5) - 1
Adodc7.Recordset.Update '加上更新
Adodc7.Recordset.MoveNext
Next i