首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

VB6+ACCESS 在事务控制中为什么两条语句不可同时执行,该如何解决

2012-06-12 
VB6+ACCESS 在事务控制中为什么两条语句不可同时执行开发环境 VB6+ACCESS2003具体语句如下(YHXX的字段有:

VB6+ACCESS 在事务控制中为什么两条语句不可同时执行
开发环境 VB6+ACCESS2003

具体语句如下(YHXX的字段有:用户编号,用户卡号,状态,关系,标识) :

  sql1 = " update yhxx set 标识='',关系='无效' where 用户编号=1 and 状态='正常' and 关系='有效' and 标识='有效' "
   
  sql2 = " update yhxx set 关系='无效' where 用户卡号=2 and 状态='正常' and 关系='有效' and 标识='有效' "
   
  On Error GoTo Errb
  Dim cc As Boolean
  Conn.BeginTrans
   
  If Check1.value = 1 Then '开户错
  Conn.Execute sql1, n1
  Conn.Execute sql2, n2
  conn.committrans
   
  sql1和sql2应该是各作用一条记录,两条记录互不相干,但是执行后却

  发现
  Conn.Execute sql1, n1
  Conn.Execute sql2, n2

  执行完后n1=1 ,n2=0

  改变一下顺序
  Conn.Execute sql2, n2
  Conn.Execute sql1, n1

  执行完后n2=1 ,n1=0

  导致 此事务不能完成
   
  请问是何原因。  





[解决办法]
最好你查一下数据库记录,因为两句sql语句一个用“用户编号”,另一个用“用户卡号”,这两句语句很可能是一条记录。
[解决办法]
是否是你的Sql语句有问题?
[解决办法]
看你的描述,你的事务已经正常被执行,之所以n1或n2一个为0,在于你的更新条件数据是互斥的


用户编号=1 and 状态='正常' and 关系='有效' and 标识='有效' " 符合的记录,标识='',关系='无效' 被执行后,不再有满足条件: 用户卡号=2 and 状态='正常' and 关系='有效' and 标识='有效' "的记录,

或者反之


[解决办法]
多半是第一句执行后第二名没有符合条件的记录了

热点排行