第一步:
我的试验是这样的,我用ado记录集将sqlserver数据库中的表取到窗体中的表格中,在表格中修改数据后执行rs.update,然后我到企业管理器中查看是否产生更新,我发现更新是正常的。
第二步:
我重新上次操作,不过区别是在ado记录集将内容取到表格中后,不是先去修改字段内容。而是先到企业管理器中将这个表的数据修改。然后回到vb程序窗体再次修改字段内容,然后运行rs.update,运行后没有反映。也不报错。可是我到企业管理器中一看,根本没有更新。我再改一下字段内容,再次运行驶rs.update,此时更新报错。
我不明白。为什么我通过企业管理器改过数据后就不能更新了呢?如果这样,多台客户机操作不就存在一台机器修改后,其他机器就不能修改了吗?
如何解决这个更新问题呢?
高手快来帮一下我吧,我头都大了。
我的试验是这样的,我用ado记录集将sqlserver数据库中的表取到窗体中的表格中,在表格中修改数据后执行rs.update,然后我到企业管理器中查看是否产生更新,我发现更新是正常的。
第二步:
我重新上次操作,不过区别是在ado记录集将内容取到表格中后,不是先去修改字段内容。而是先到企业管理器中将这个表的数据修改。然后回到vb程序窗体再次修改字段内容,然后运行rs.update,运行后没有反映。也不报错。可是我到企业管理器中一看,根本没有更新。我再改一下字段内容,再次运行驶rs.update,此时更新报错。
我不明白。为什么我通过企业管理器改过数据后就不能更新了呢?如果这样,多台客户机操作不就存在一台机器修改后,其他机器就不能修改了吗?
如何解决这个更新问题呢?
高手快来帮一下我吧,我头都大了。
这类方法写的
然后你又在企业管理器里修改了主键
结果你表格里没有改的数据在sql里就查不到对应的记录了也就不能修改了
最好就是你的表格里的数据再导一次应该就可以了
至于
多台客户机操作不就存在一台机器修改后,其他机器就不能修改了吗?
这个就要考虑sql的动态游标和锁了
嘿嘿
这个有点复杂
你上面的情况应该是脏读吧
如果真要实现多客户机操作的话
我想应该在别人浏览的时候给sql加锁不能修改,只有浏览结束才能修改
在修改的时候别人不能浏览,只有修改结束别人才能浏览.
我就是改了一个普通字段。
我的代码如下:
If conn.State <> adStateOpen Then
Call getconn
End If
If rsdata.State = adStateOpen Then
rsdata.Close
End If
rsdata.CursorLocation = adUseClient '使用本地游标
rsdata.Open strquery, conn, adOpenStatic, adLockOptimistic 'adLockBatchOptimistic 'adLockOptimistic--
If rsdata.BOF = True And rsdata.EOF = True Then
MsgBox "没有记录"
Exit Sub
End If
MsgBox rsdata.Fields("部门").Value
rsdata.MoveFirst
Set txtjgcz.DataSource = rsdata
txtjgcz.DataField = "加工产值"
我把字段绑到一个文本框上,然后点一下按钮更新。
按钮事件为:rs.update
就是这样,我知道这是脏读,我想问如何处理呢?
怎么写的?