主题:为啥只显示前6条记录????
abraham.zhang
[专家分:0] 发布于 2008-11-23 00:22:00
各位老师,以下代码是写在 组合框的 init 里的:
use rcv
go 1
yyy=reccount()
for jhj=1 to yyy
thisform.combo1.addlistitem(rcv.name)
jhj=jhj+1
skip
endfor
this.requery
RCV的表里共有11条记录,但是下组合框里只能显示出前6条,
如果把skip 换成 go jhj 系统提示“超出记录范围”,
不知是什么原因,还请高手赐教,不胜感激!!
回复列表 (共4个回复)
沙发
moz [专家分:37620] 发布于 2008-11-23 02:54:00
你应该研究一下 for 的实际运行方式,
在你的代码里,jhj从1到reccount()本来是没有错的,
但是你却加了一行jhj=jhj+1,变成了画蛇添足,
加速后结果这个循环体只运行了一半,当然11条记录只得前6条了。
把那一行删掉就可以了。
如果表和组合框没有数据冲突的矛盾的话,
我想直接设置组合框的数据源属性会来得方便快捷简单:
.RowSourceType=2
.RowSource="rcv"
论坛里有个老头子近排少来了,
我只好越俎代庖,哆嗦了一下,别介意。
板凳
abraham.zhang [专家分:0] 发布于 2008-11-23 13:15:00
真是一语惊醒梦中人,感谢MOZ老师,我真是大意,FOR循环体本身就是默认+1的。
用MOZ老师的第二个方法,问题解决了。
但是第一种方法,在去掉jhj=jhj+1后,运行表单,组后框一得到焦点就失效了,
变成灰色了,鼠标点击也无效。不知为何??
3 楼
moz [专家分:37620] 发布于 2008-11-23 14:20:00
this.requery
[quote]重新查询列表框或组合框控件绑定的行源(Row Source)。
Control.Requery
说明 应用于:ComboBox | ListBox
使用 REQUERY 方法可以确保控件中包含最新的数据。REQUERY 方法重新查询 RowSource 属性,并且使用新的值更新列表。[/quote]
4 楼
abraham.zhang [专家分:0] 发布于 2008-11-23 16:38:00
经过仔细的研究,发现应该在skip前面加一条测试记录指针是否已经到达文件尾的命令,问题就解决了。
我来回复