回 帖 发 新 帖 刷新版面

主题:在过滤缓冲区取第5条记录字段值为什么会变成倒数第5条,高手可以回答吗?





希望热心的powerbuilder高手给予解答!!

我在电脑上反复试验,结果发现一个奇怪的问题:

我要操作的数据库名为unit_x ,数据库内有一定量的数据,

该数据库有四个字段分别为unit_no char(8), unit_name char(20),numbers double , qianyuan double.

按我的想法,我进行了如下的操作:

1、将此数据库在pb内做了一个数据窗口dw_unit

2、新建立了一个窗口 w_main,编写如下脚本:

connect using sqlca;

dw_1.settransobject(sqlca)

dw_1.retrieve()

3、建立数据窗口控件dw_1与数据窗口dw_unit的关联

4、运行程序后,数据库中的数据可以正确显示。这一点可以说明,数据库联接正确,并且可以从中通过dw_1.retrieve()
   检索出数据并正确显示在数据库窗口中。


5、在窗口 w_main中,新建一个”command button",在text后注明“测试”,编写clicked脚本如下:

这段脚本的意思是,将数据库unit_x中的字段numbers中不等于5的记录过滤掉,然后再将移到过滤缓冲区中的第5条记录”unit_name"字段上对应的值显示

出来,这样我就可以有效了解检验过滤的情况了。

string abc,xyz

abc="numbers=5"

dw_1.setfilter(abc)

dw_1.filter()

dw_1.retrieve() //经本人在电脑上反复试验,有和没有这一句显示的结果不一样!!

xyz=dw_1.getitemstring(5,"unit_name",filter!,true)

sle_1.text=xyz

6、运行情况显示,显示在sle_1.text文本框中的值,并不是移到过滤缓冲区中的第5条记录”unit_name"字段所对应的值显示,却成了倒数第5条记录”unit_name"字段上对应的值。

7、我怀疑问题出在dw_1.retrieve() 这一句,于是将这一句屏蔽,运行后,单击1次“测试”,显示在sle_1.text文本框中的值,是移到过滤缓冲区中的倒数第5条记录”unit_name"字段所对应的值显示,再单击1次,显示在sle_1.text文本框中的值,是移到过滤缓冲区中的第5条记录”unit_name"字段所对应的值。最后的总结,只要单击的是第奇数次显示的情况与第一次相同,单击的是第偶数次显示的情况与第二次相同


如果你们有兴趣的话,可以在电脑是做一个实例,相信会有同样的问题????????

xgjsbx@126.com   qq:24532713

回复列表 (共1个回复)

沙发

有这种现象?真有趣,我也试试!

我来回复

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