日期:2014-05-17  浏览次数:20661 次

为什么事务执行完毕后,再次调出的数据没有更新
Private Sub Command1_Click()
  On Error GoTo Sub2Err

  sql1 = " INSERT INTO YHXX (用户编号,用户姓名) values ("& Trim(Bianhao.Text) & ",'" & Trim(Xingming.Text) & "')"
   
  On Error GoTo Errb
  Conn.BeginTrans
  Conn.Execute sql1, n1
  If n1 = 1 Then
  Conn.CommitTrans
  Else
  Conn.RollbackTrans
  Call dv_beep(icdev, 10): Call dv_beep(icdev, 10)
  MsgBox " 操作失败,请重新操作 。 ", vbOKOnly, "提示"
  Exit Sub
  End If
  Call LoadForm
Exit Sub
Sub2Err:
  MsgBox ERR.Description
end sub


LoadForm具体定义如下:

Private Sub LoadForm()
On Error GoTo Sub1Err
  Set RSTBH = New ADODB.Recordset
   
  If RSTBH.State = adStateOpen Then RSTBH.Close
  sql = "select 用户编号 from yhxx order by 用户编号 "
  RSTBH.Open sql, Conn, adOpenKeyset, adLockReadOnly
   
  If Not (RSTBH.BOF And RSTBH.EOF) Then
  RSTBH.MoveLast
  bianhao.text = RSTBH.Fields("用户编号") +1
  Else
  bianhao.text = 0
  End If
   
Exit Sub
Sub1Err:
  MsgBox ERR.Description
End Sub

问题如下:
Command1_Click执行完毕后,数据库中的用户增加了一条,用户编号随之加1  

但是我现在遇到的问题是,Command1_Click中的事务正常执行完毕后,LoadForm中RSTBH.Fields("用户编号") 得到的编号还是原编号,不是加1之后的编号,

请问这是怎么回事,谢谢大家,急盼解决。



------解决方案--------------------
直接查數據庫,數據庫中的數據是否正確,如果數據庫中數據正確,說明你執行的新增沒問題

然後查你調出的語句
還有直接 "select top 1 用户编号 from yhxx order by 用户编号 desc"
或寫為"select max(用户编号) from yhxx",這樣就是最大的一個了,何必全取了,然後再取最後一個

------解决方案--------------------
取最大值问题,最好在后台采用递增就行了.
------解决方案--------------------
LoadForm是第一次加载的函数吧,你是不是应该刷新一下,重新从数据库取数据。
------解决方案--------------------
Call LoadForm执行了吗