rs.Open "select * from AA ", conn, adOpenKeyset, adLockBatchOptimistic
     If Not rs.BOF Then rs.MoveFirst
     Do While rs.EOF = False                     '将aa字段读入列表框中
         c_client.AddItem rs("aa")
         If Not rs.EOF Then rs.MoveNext
     Loop
  rs.Close这一段代码,假如我设置断点,在do while上,单步调试没问题,读入列表框的数据完整假如我不设置断点,直接执行,读入列表框的数据少了一部分

解决方案 »

  1.   

    调试后发现,设置断点和不设置断点循环次数都一样,全部字段记录都遍历了但是设置断点时列表框c_client显示了全部记录而不设置断点执行,c_client显示的记录就缺了最后部分就是设置断点影响了列表框的显示,这是什么情况啊?
      

  2.   


    rs.Open "select * from AA ", conn, adOpenKeyset, adLockBatchOptimistic
      If Not rs.BOF Then rs.MoveFirst
      Do While rs.EOF = False '将aa字段读入列表框中
      c_client.AddItem rs("aa")
    doevents '虽然我也不明白怎么会这样,但是这样可能会解决你的问题
      If Not rs.EOF Then rs.MoveNext
      Loop
      rs.Close
      

  3.   

    c_client是什么?listview?
    我碰到过listview显示问题,跟你描述的一样,自动排序导致。
      

  4.   

    没用过这个控件看它有没有sort属性,如果有,在add之前把它设置为false,完毕再设置为true试试
      

  5.   

    最后加一句
    c_client.Refresh
    试试看。
      

  6.   

    这代码看着不舒服, 帮你改得和谐一点吧:
    With rs
      .Open "select * from AA ", conn, adOpenKeyset, adLockBatchOptimistic
      If not .bof then .MoveFirst
      Do While not .EOF '将aa字段读入列表框中
        c_client.AddItem .fields("aa").value & ""
        .MoveNext
      Loop
      .Close
    end with
      

  7.   

    据说c_client.AddItem这个会丢数据.
    那么改成这样试试:With rs
      c_client.visible=false
      .Open "select * from AA ", conn, adOpenKeyset, adLockBatchOptimistic
      If not .bof then .MoveFirst
      Do While not .EOF '将aa字段读入列表框中
        c_client.AddItem .fields("aa").value & ""
        .MoveNext
      Loop
      .Close
      c_client.visible=true
    end with
      

  8.   

    可能你的c_client刷新不好,换成listview试试看先