主题:在过滤缓冲区取第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