回 帖 发 新 帖 刷新版面

主题:为啥只显示前6条记录????

各位老师,以下代码是写在 组合框的 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个回复)

沙发

你应该研究一下 for 的实际运行方式,
在你的代码里,jhj从1到reccount()本来是没有错的,
但是你却加了一行jhj=jhj+1,变成了画蛇添足,
加速后结果这个循环体只运行了一半,当然11条记录只得前6条了。
把那一行删掉就可以了。

如果表和组合框没有数据冲突的矛盾的话,
我想直接设置组合框的数据源属性会来得方便快捷简单:
.RowSourceType=2
.RowSource="rcv"

论坛里有个老头子近排少来了,
我只好越俎代庖,哆嗦了一下,别介意。

板凳

真是一语惊醒梦中人,感谢MOZ老师,我真是大意,FOR循环体本身就是默认+1的。
用MOZ老师的第二个方法,问题解决了。
但是第一种方法,在去掉jhj=jhj+1后,运行表单,组后框一得到焦点就失效了,
变成灰色了,鼠标点击也无效。不知为何??

3 楼

this.requery
[quote]重新查询列表框或组合框控件绑定的行源(Row Source)。 
Control.Requery
说明  应用于:ComboBox | ListBox
使用 REQUERY 方法可以确保控件中包含最新的数据。REQUERY 方法重新查询 RowSource 属性,并且使用新的值更新列表。[/quote]

4 楼

经过仔细的研究,发现应该在skip前面加一条测试记录指针是否已经到达文件尾的命令,问题就解决了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册