treeview控件,第二层只能显示1条数据,怎么解决?

紫影Sail 2005-05-24 11:19:27
treeview控件分三层,第一层是根目录,显示文本"请选择房间和类别"
第二层和第三层分别调用游标显示tt_fjlb表和tt_lbdm表中的内容。
问题,第二层只显示表中第一条记录,怎样才能显示表中所有记录?
代码如下:
string ls_fjdm,ls_fjmc,ls_lbdm,ls_lbmc
TreeViewItem ltvi_Item,ltvi_Item1,ltvi_Item2
long lng_handle,lng_handle1,lng_handle2,ll_root
ll_root = tv_1.FindItem(RootTreeItem!, 0)

ltvi_Item.label = "请选择房间和类别"
ltvi_Item.data = ""
ltvi_Item.pictureindex = 1
ltvi_Item.children = True
ltvi_Item.selectedpictureindex = 2
lng_handle = tv_1.InsertItemLast(0, ltvi_Item)
//tv_1.ExpandItem(lng_handle)
DECLARE de_fjlb CURSOR FOR
SELECT tt_fjlb.fjlbdm,
tt_fjlb.fjlbmc
FROM tt_fjlb ;

//声明游标
open de_fjlb;
//打开游标
FETCH de_fjlb INTO :ls_fjlb,:ls_fjmc;
DO WHILE SQLCA.SQLCODE = 0
ltvi_Item1.label = ls_fjlb + " " + ls_fjmc
ltvi_Item1.data = ls_fjlb
ltvi_Item1.pictureindex = 1
ltvi_Item1.children = True
ltvi_Item1.selectedpictureindex = 2
lng_handle1 = tv_1.InsertItemLast(lng_handle, ltvi_Item1)
// tv_1.ExpandItem(lng_handle)



DECLARE de_lbdm CURSOR FOR
SELECT tt_lbdm.lbdm,
tt_lbdm.lbmc
FROM tt_lbdm ;

//声明游标
open de_lbdm;
//打开游标
FETCH de_lbdm INTO :ls_lbdm,:ls_lbmc;
DO WHILE SQLCA.SQLCODE = 0
ltvi_Item2.label = ls_lbdm + " " + ls_lbmc
ltvi_Item2.data = ls_lbdm
ltvi_Item2.pictureindex = 3
ltvi_Item2.children = false
ltvi_Item2.selectedpictureindex = 4
lng_handle2 = tv_1.InsertItemLast(lng_handle1, ltvi_Item2)
tv_1.ExpandItem(lng_handle1)
FETCH de_lbdm INTO :ls_lbdm,:ls_lbmc;

LOOP
CLOSE de_fjlb;
tv_1.ExpandItem(ll_root)
FETCH de_fjlb INTO :ls_fjlb,:ls_fjmc;

LOOP

CLOSE de_fjlb;

...全文
85 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
紫影Sail 2005-05-30
  • 打赏
  • 举报
回复
我想我找到原因了,但是怎么改就不知道了,望高手帮助解决
我想,问题得出现是因为“DO WHILE SQLCA.SQLCODE = 0”
的重复出现造成的,第一条这个语句限制的第二条同样的语句,造成只有第三层数据只能在第二层的最后一项出现。
也就是说用遣套游标的时候只要解决“DO WHILE SQLCA.SQLCODE = 0”的问题就可以完整显示数据了。
因此在使用遣套游标的情况下,怎么解决问题,望高手指教。
紫影Sail 2005-05-24
  • 打赏
  • 举报
回复
在没有第三层的时候,TV显示很正常,数据表里的内容都可以显示,但是加上第三层以后就不行了
wangxichen 2005-05-24
  • 打赏
  • 举报
回复
如果没有自定义的事务,可以使用USING SQLCA;
否则使用自定义的using 事务名
wangxichen 2005-05-24
  • 打赏
  • 举报
回复
没有看出明显的错误,从以下几个地方检查一下看:
1、游标定义中加入事务名称。
DECLARE de_fjlb CURSOR FOR
SELECT tt_fjlb.fjlbdm,
tt_fjlb.fjlbmc
FROM tt_fjlb
USING SQLCODE;
2、使用messagebox弹一下取出的变量看是否正确
3、在执行后全展开树看是否是插入错误或者在折叠状态。

604

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 控件与界面
社区管理员
  • 控件与界面社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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