我现在遇到一个很棘手的问题,增加二条记录到数据库的两个表,一个表是yhxx表(注:用户信息表) 另一个表是sdjl表(注:售电记录表)。  前者使用ADODC3这个控件增加一条用户信息的记录,后者使用的是CONN.EXCUTE SQL这种方法增加一条此用户的购电记录。但是这两条记录增加完成后,分别从这两个表中立马查询增加的包含此用户编号的记录,sdjl中可以立即查到,但是yhxx表,却不能立即查到,并不是说没有,需要查二、三次,才会查到这个用户编号。请大家帮我分析一下,原因是什么。 以下是具体的代码: 
'*********** 代码开始************         Adodc3.Recordset.AddNew 
        Adodc3.Recordset!用户编号 = CLng(Zongbianhao) 
        。 
        Adodc3.Recordset.UpdateBatch 
  
        sql = "Insert into sdjl ([用户编号],[用户表号]) values (" + Trim(Text13.Text) + "," + Trim(Text2.Text) +  ")" 
        
        Conn.Execute sql         Dim Rst1 As ADODB.Recordset 
        Set Rst1 = New ADODB.Recordset 
        Dim sql As String 
        
        sql = "select * from sdjl where 用户编号 =" & CStr(Zongbianhao) & ""         
        If Rst1.State = 1 Then Rst1.Close 
        
        Rst1.Open sql, Conn, adOpenKeyset, adLockPessimistic 
        
 1处    If Rst1.RecordCount = 0 Then MsgBox "SDJL 中找不到此用户编号", vbOKOnly, "提示" 
        Rst1.Close 
        
        sql = "select * from yhxx where 用户编号 =" & CStr(Zongbianhao) & ""         
        If Rst1.State = 1 Then Rst1.Close 
        
        Rst1.Open sql, Conn, adOpenKeyset, adLockPessimistic 
        
 2处    If Rst1.RecordCount = 0 Then MsgBox " yhxx  中找不到此用户编号  ", vbOKOnly, "提示" '*********** 代码结束************ 执行完记录的添加后,1处代码无提示  但是2处代码有提示   " yhxx  中找不到此用户编号  "  这是怎么回事。如何避免。  

解决方案 »

  1.   

    再补充一下,我的开发环境是VB6+ACCESS2003+ADO
      

  2.   

    数据库操作是否执行sql语句了后,直接更新了数据库...
      

  3.   


    不明白您的意思。 我再解释一下, 增加了两条记录,一条记录是用户信息,增加到yhxx(用户信息表),是通过ADODC控件UPDATE,另一条记录是这个用户的购电记录,增加到sdjl(售电记录表)中,是通过CONN.EXCUTE SQL来增加的。 前者增加的记录立马查,查不到,第二次查可以查到。后者增加的记录立马就可以查到。 所以想问一下,这两种增加记录的方式在提交数据到数据库的时间上有区别吗,如何解决前者的问题。谢谢。
      

  4.   

    不要insert之后就立刻查询,这有可能是查不到的。原因ADO的insert操作不是阻塞的,只要判断ADO相关执行函数的返回值即可。