我在一个text控件的bookcode_KeyDown事件调用(用回车键调用)一个函数insertdata来添加一个记录到selltem表上:Private Sub Form_Load() '打开窗体就调用ShowTitle,ShowData函数
ShowTitle
ShowDataEnd Subinsertdata的代码是:
Private Sub insertdata()
   Dim bookcode2, bookname2 As String
   Dim bookprice2, sellprice2, inprice2 As Integer
   txtSQL = "select bookcode,bookname,bigclass,bookprice,sellprice,hits,stock,inprice from bookinfo where bookcode='" & Trim(bookcode.Text) & "'"
    Set mrc = ExecuteSQL(txtSQL, MsgText)
    If Not mrc.EOF Then
    bookcode2 = mrc.Fields(0)
    bookname2 = mrc.Fields(1)
    bookprice2 = mrc.Fields(3)
    sellprice2 = mrc.Fields(4)
    inprice2 = mrc.Fields(7)
    mrc.Close
    '往销售临时表添加记录
    txtSQL = "select * from selltem"
    Set mrc = ExecuteSQL(txtSQL, MsgText)
    mrc.AddNew
    mrc.Fields(1) = bookcode2
    mrc.Fields(2) = bookname2
    mrc.Fields(3) = bookprice2
    mrc.Fields(4) = sellprice2
    mrc.Fields(5) = inprice2
    mrc.Update
    mrc.Close              
    Else
    MsgBox "该书还没有入库!", vbOKOnly + vbExclamation, "警告"
    End If
   ShowData '调用ShowData函数
   bookcode.Text = ""
End Sub其中ShowData函数是:
Private Sub ShowData()
        Dim i As Integer
       txtSQL = "select bookcode,bookname,bookprice,sellprice from selltem order by id desc"
        Set mrc = ExecuteSQL(txtSQL, MsgText)                
        With msgList
        .Rows = 1        
        Do While Not mrc.EOF
            .Rows = .Rows + 1
            For i = 1 To mrc.Fields.Count          
           .TextMatrix(.Rows - 1, i) = mrc.Fields(i - 1) 
            Next
            mrc.MoveNext
        Loop
    End With
    mrc.Close  
   bookcode.Text = ""
End Sub这样可以把记录成功添加到表selltem里面,不过在显示数据方面就出现了问题,
情况如下:
1.除了刚添加到表里面的记录不能显示外,其他记录都能在控件msgList显示.
2.当再按一下回车键之后,就弹出MsgBox窗口,确定之后,刚添到表的那个记录才显示出来!
3.重新打开窗体,运行Form_Load(),刚添到表的那个记录页可以显示出来!问题就是,为什么数据不能在控件msgList同步更新!想了一整天了,还是想不出来,所以来这找高手了,请大家指导指导!!!

解决方案 »

  1.   

    樓上的你的 showdata 的 sub中間Do While Not mrc.EOF
                .Rows = .Rows + 1
                For i = 1 To mrc.Fields.Count          
               .TextMatrix(.Rows - 1, i) = mrc.Fields(i - 1) 
                Next
                mrc.MoveNext
            Loop
    這個地方有問題噢我懶得看了,你把數據庫導 access中,偶幫你看看[email protected]
      

  2.   

    单步跟踪试一下最好是在记录添加后,在刷新数据时检查一下  Set mrc = ExecuteSQL(txtSQL, MsgText)   所产生的mrc.recordcount 的数目是否增加!!
      

  3.   

    If Not mrc.EOF Then
        bookcode2 = mrc.Fields(0)
        bookname2 = mrc.Fields(1)
        bookprice2 = mrc.Fields(3)
        sellprice2 = mrc.Fields(4)
        inprice2 = mrc.Fields(7)
        mrc.Close
    你这个有问题啊,不懂.
      

  4.   

    你再检查一下语句的顺序!如:msgbox 是在添加记录之前显示,还是之后显示!包你豁然开朗!