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之后的编号,请问这是怎么回事,谢谢大家,急盼解决。

解决方案 »

  1.   

    直接查數據庫,數據庫中的數據是否正確,如果數據庫中數據正確,說明你執行的新增沒問題然後查你調出的語句
    還有直接 "select top 1 用户编号 from yhxx order by 用户编号 desc"
    或寫為"select max(用户编号)  from yhxx",這樣就是最大的一個了,何必全取了,然後再取最後一個
      

  2.   


    两个方法都试过了没有用,补充说一下,我的数据库是ACCESS2003
      

  3.   

    LoadForm是第一次加载的函数吧,你是不是应该刷新一下,重新从数据库取数据。
      

  4.   


    怎么样再次刷新,我已经  用 RSTBH.Open sql, Conn, adOpenKeyset, adLockReadOnly
    重新搜索了呀
      

  5.   

    每次事务执行完毕后,如果要继续添加就会再执行一遍了。当然在这个窗体刚刚开始运行的运行,也会先执行一遍LOADFORM