用F5单步调试没问题,但是不设断点执行结果就变了是怎么回事?

touch_hand 2012-06-01 11:13:55
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上,单步调试没问题,读入列表框的数据完整

假如我不设置断点,直接执行,读入列表框的数据少了一部分
...全文
237 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
clear_zero 2012-06-06
  • 打赏
  • 举报
回复
可能你的c_client刷新不好,换成listview试试看先
touch_hand 2012-06-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
据说c_client.AddItem这个会丢数据.
那么改成这样试试:

VB code

With rs
c_client.visible=false
.Open "select * from AA ", conn, adOpenKeyset, adLockBatchOptimistic
If not .bof then .MoveFirst
Do While ……
[/Quote]

说.Fields是无效的。
touch_hand 2012-06-05
  • 打赏
  • 举报
回复
崩溃了,以上各位提出的解决方法都尝试过,无法解决


而且,设置断点后百试不爽的能够显示全部记录!

我就想不明白了,这和断点有个鸡毛关系啊?
熊孩子开学喽 2012-06-05
  • 打赏
  • 举报
回复
据说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
熊孩子开学喽 2012-06-05
  • 打赏
  • 举报
回复
这代码看着不舒服, 帮你改得和谐一点吧:


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
赵4老师 2012-06-05
  • 打赏
  • 举报
回复
最后加一句
c_client.Refresh
试试看。
  • 打赏
  • 举报
回复
没用过这个控件。。。看它有没有sort属性,如果有,在add之前把它设置为false,完毕再设置为true试试
touch_hand 2012-06-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
c_client是什么?listview?
我碰到过listview显示问题,跟你描述的一样,自动排序导致。
[/Quote]

c_client就是个列表框
  • 打赏
  • 举报
回复
c_client是什么?listview?
我碰到过listview显示问题,跟你描述的一样,自动排序导致。
touch_hand 2012-06-01
  • 打赏
  • 举报
回复
调试了好几次啊,我也觉得很诡异0......
贝隆 2012-06-01
  • 打赏
  • 举报
回复
可能吗???
clear_zero 2012-06-01
  • 打赏
  • 举报
回复

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
touch_hand 2012-06-01
  • 打赏
  • 举报
回复
调试后发现,设置断点和不设置断点循环次数都一样,全部字段记录都遍历了

但是设置断点时列表框c_client显示了全部记录

而不设置断点执行,c_client显示的记录就缺了最后部分

就是设置断点影响了列表框的显示,这是什么情况啊?

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧