100分以上送答题人.关于树的生成.急着的.所以立即解决立即给分.晚上不在线,其他都在线.谢谢了!!!急啊!!!

flyppl 2003-08-19 06:23:46
我有两个表,第一个是站点内容.站点号:st_id,
站点名:st_name
第二个表是客户表其中有客户号user_id,
客户名user_com,
客户所属站点号user_addcode
我希望的是属于该站点的客户在该站点下面显示.但是我的代码(根据别人改的)显示的是所有的客户都显示在每一个站点下.请问我怎么样写第三个节点的代码.
datastore lds_dept,lds_emp
long ll_rootitem,ll_newitem
long ll_row1,ll_row2
long i,j
string ls_name,ll_code
TreeviewItem ltvi_tvitem

lds_dept = create datastore
lds_dept.dataobject = "dw_tree_station"//站点数据
lds_dept.settransobject(sqlca)
lds_dept.retrieve()

lds_emp = create datastore
lds_emp.dataobject = "dw_tree_client" //客户数据
lds_emp.settransobject(sqlca)
lds_emp.retrieve()

tv_1.SetReDraw(false)
ltvi_tvitem.label = "站点列表" //ltvi_tvitem为根项
ltvi_tvitem.pictureindex = 1
ltvi_tvitem.selectedpictureindex = 6
ll_rootitem = tv_1.InsertItemLast(0, ltvi_tvitem) //返回根句柄ll_rootitem

ll_row1 = lds_dept.RowCount()
ll_row2 = lds_emp.RowCount()

for i = 1 to ll_row1

ls_name = lds_dept.getitemstring(i,"st_name")
ll_code = lds_dept.getitemstring(i,"st_id")

ltvi_tvitem.label = ls_name
ltvi_tvitem.data = lds_dept.getitemstring(i,"st_id")
ltvi_tvitem.pictureindex = 2
ltvi_tvitem.selectedpictureindex = 4
ll_newitem = tv_1.InsertItemLast(ll_rootitem,ltvi_tvitem)
//返回一个句柄ll_newitem ,作其子项父句柄。ll_rootitem为根句柄
string fuid,fucom
long ll_handle
for j = 1 to ll_row2 step 1

// 不知道该怎么办!!!!
//
ltvi_tvitem.label = lds_emp.getitemstring(j,"user_com")
ltvi_tvitem.data = lds_emp.getitemstring(j,"user_id")
ltvi_tvitem.pictureindex = 3
ltvi_tvitem.selectedpictureindex = 5
tv_1.InsertItemLast(ll_newitem,ltvi_tvitem)//用到父句柄

next
next
tv_1.setredraw(True)
dw_1.SetTransObject(SQLCA)

不负众望啊.大家们快点来啊.我已经搜索了所有的以前的帖子了.!!!谢谢了.
...全文
35 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
runsoft 2003-08-20
  • 打赏
  • 举报
回复
datastore lds_dept,lds_emp
long ll_rootitem,ll_newitem
long ll_row1,ll_row2
long i,j
string ls_name,ll_code
TreeviewItem ltvi_tvitem
string fuid,fucom
long ll_handle
string ls_oldsql,ls_newsql


lds_dept = create datastore
lds_dept.dataobject = "dw_tree_station"//站点数据
lds_dept.settransobject(sqlca)
lds_dept.retrieve()

lds_emp = create datastore
lds_emp.dataobject = "dw_tree_client" //客户数据
lds_emp.settransobject(sqlca)
lds_emp.retrieve()
ls_oldsql = lds_emp.getsqlselect()

tv_1.SetReDraw(false)
ltvi_tvitem.label = "站点列表" //ltvi_tvitem为根项
ltvi_tvitem.pictureindex = 1
ltvi_tvitem.selectedpictureindex = 6
ll_rootitem = tv_1.InsertItemLast(0, ltvi_tvitem) //返回根句柄ll_rootitem

ll_row1 = lds_dept.RowCount()

for i = 1 to ll_row1
ls_name = lds_dept.getitemstring(i,"st_name")
ll_code = lds_dept.getitemstring(i,"st_id")
ltvi_tvitem.label = ls_name
ltvi_tvitem.data = lds_dept.getitemstring(i,"st_id")
ltvi_tvitem.pictureindex = 2
ltvi_tvitem.selectedpictureindex = 4
ll_newitem = tv_1.InsertItemLast(ll_rootitem,ltvi_tvitem)
//返回一个句柄ll_newitem ,作其子项父句柄。ll_rootitem为根句柄
//增加

ls_newsql = ls_oldsql + " where user_addcode = '" + ll_code +"'"
lds_emp.setsqlselect(ls_newsql)
lds_emp.retrieve()
lds_emp.setsqlselect(ls_oldsql)
ll_row2 = lds_emp.rowcount()
for j = 1 to ll_row2 step 1
ltvi_tvitem.label = lds_emp.getitemstring(j,"user_com")
ltvi_tvitem.data = lds_emp.getitemstring(j,"user_id")
ltvi_tvitem.pictureindex = 3
ltvi_tvitem.selectedpictureindex = 5
tv_1.InsertItemLast(ll_newitem,ltvi_tvitem)//用到父句柄

next
next
tv_1.setredraw(True)
dw_1.SetTransObject(SQLCA)

看看这段代码
runsoft 2003-08-20
  • 打赏
  • 举报
回复
string fuid,fucom
long ll_handle
string ls_oldsql,ls_newsql
把他放到最上面去定义,,不要放在中间
yao_xh 2003-08-20
  • 打赏
  • 举报
回复
你的两个表,之间有客户所属站点号user_addcode作为连接,应该很好处理。

在第二次循环时候,不要每次都根据站点号检索出客户内容,那样会很慢
你可以:

在第二层循环即:
long ll_temp
ll_row2 = lds_emp.retrieve() //这句话,不要放在 for1的循环中,放在外面.
for j = 1 to ll_row2
ls_temp = lds_emp.getitemnumber(j,"user_addcode")
if ll_code = ll_temp then //假如该站点下有客户,则插入子级
ltvi_tvitem.label = lds_emp.getitemstring(j,"user_com")
ltvi_tvitem.data = lds_emp.getitemstring(j,"user_id")
ltvi_tvitem.pictureindex = 3
ltvi_tvitem.selectedpictureindex = 5
tv_1.InsertItemLast(ll_newitem,ltvi_tvitem)//用到父句柄
end if
next
flyppl 2003-08-20
  • 打赏
  • 举报
回复
谢谢!!!帮我看看.
flyppl 2003-08-20
  • 打赏
  • 举报
回复
datastore lds_dept,lds_emp
long ll_rootitem,ll_newitem
long ll_row1,ll_row2
long i,j
string ls_name,ll_code
TreeviewItem ltvi_tvitem

lds_dept = create datastore
lds_dept.dataobject = "dw_tree_station"//站点数据
lds_dept.settransobject(sqlca)
lds_dept.retrieve()

lds_emp = create datastore
lds_emp.dataobject = "dw_tree_client" //客户数据
lds_emp.settransobject(sqlca)
lds_emp.retrieve()

tv_1.SetReDraw(false)
ltvi_tvitem.label = "站点列表" //ltvi_tvitem为根项
ltvi_tvitem.pictureindex = 1
ltvi_tvitem.selectedpictureindex = 6
ll_rootitem = tv_1.InsertItemLast(0, ltvi_tvitem) //返回根句柄ll_rootitem

ll_row1 = lds_dept.RowCount()

for i = 1 to ll_row1
ls_name = lds_dept.getitemstring(i,"st_name")
ll_code = lds_dept.getitemstring(i,"st_id")
ltvi_tvitem.label = ls_name
ltvi_tvitem.data = lds_dept.getitemstring(i,"st_id")
ltvi_tvitem.pictureindex = 2
ltvi_tvitem.selectedpictureindex = 4
ll_newitem = tv_1.InsertItemLast(ll_rootitem,ltvi_tvitem)
//返回一个句柄ll_newitem ,作其子项父句柄。ll_rootitem为根句柄
string fuid,fucom
long ll_handle
string ls_oldsql,ls_newsql
//增加
ls_oldsql = lds_emp.getsqlselect()
ls_newsql = ls_oldsql + " where user_addcode = '" + lds_dept.getitemstring(i,"st_id") +"'"
lds_emp.setsqlselect(ls_newsql)
lds_emp.retrieve()
lds_emp.setsqlselect(ls_oldsql)
ll_row2 = lds_emp.rowcount()
for j = 1 to ll_row2 step 1
ltvi_tvitem.label = lds_emp.getitemstring(j,"user_com")
ltvi_tvitem.data = lds_emp.getitemstring(j,"user_id")
ltvi_tvitem.pictureindex = 3
ltvi_tvitem.selectedpictureindex = 5
tv_1.InsertItemLast(ll_newitem,ltvi_tvitem)//用到父句柄

next
next
tv_1.setredraw(True)
dw_1.SetTransObject(SQLCA)
runsoft 2003-08-20
  • 打赏
  • 举报
回复
你把你修改后的代码贴出来,我看看
bomber2001 2003-08-20
  • 打赏
  • 举报
回复
ltvi_tvitem.ChildRen = True
flyppl 2003-08-20
  • 打赏
  • 举报
回复
根据JDSNHAN改的,还是没有变啊.
大家快点来帮忙下,我好急的.就这个问题了.!!!!!!!!!!!!!
flyppl 2003-08-20
  • 打赏
  • 举报
回复
不对啊.根据清风的改了以后,怎么所有的客户都到第一个站点下面了.拜托啊!!!!
gcg_cumt 2003-08-20
  • 打赏
  • 举报
回复
jdsnhan和清风的解决方法都可以。

建议你写程序的时候能对变量规范化命名,看的我也有点乱。
sslarly 2003-08-20
  • 打赏
  • 举报
回复
你把所有客户的信息在每个站点都显示出来都显示出来了,那肯定是不对的了。
flyppl 2003-08-20
  • 打赏
  • 举报
回复
东改西改,开始昏了.
应该可以了。楼上的各位,准备接分吧。
119119 2003-08-20
  • 打赏
  • 举报
回复
也给你写一个,换汤不换药的.
datastore lds_dept,lds_emp
long ll_rootitem,ll_newitem
long ll_row1,ll_row2
long i,j
string ls_name,ll_code
string fuid,fucom
long ll_handle
string ls_oldsql,ls_newsql
TreeviewItem ltvi_tvitem
string ll_temp
lds_dept = create datastore
lds_dept.dataobject = "dw_tree_station"//站点数据
lds_dept.settransobject(sqlca)
lds_dept.retrieve()

lds_emp = create datastore
lds_emp.dataobject = "dw_tree_client" //客户数据
lds_emp.settransobject(sqlca)
lds_emp.retrieve()
ls_oldsql=lds_emp.getsqlselect()

tv_1.SetReDraw(false)
ltvi_tvitem.label = "站点列表" //ltvi_tvitem为根项
ltvi_tvitem.pictureindex = 1
ltvi_tvitem.selectedpictureindex = 6
ll_rootitem = tv_1.InsertItemLast(0, ltvi_tvitem) //返回根句柄ll_rootitem

ll_row1 = lds_dept.RowCount()
for i = 1 to ll_row1
ls_name = lds_dept.getitemstring(i,"st_name")
ll_code = lds_dept.getitemstring(i,"st_id")
ltvi_tvitem.label = ls_name
ltvi_tvitem.data = lds_dept.getitemstring(i,"st_id")
ltvi_tvitem.pictureindex = 2
ltvi_tvitem.selectedpictureindex = 4
ll_newitem = tv_1.InsertItemLast(ll_rootitem,ltvi_tvitem)
//返回一个句柄ll_newitem ,作其子项父句柄。ll_rootitem为根句柄
ll_row2 = lds_emp.rowcount()
for j = 1 to ll_row2
ll_temp = lds_emp.getitemstring(j,"user_addcode")
if ll_code = ll_temp then //假如该站点下有客户,则插入子级
ltvi_tvitem.label = lds_emp.getitemstring(j,"user_com")
ltvi_tvitem.data = lds_emp.getitemstring(j,"user_id")
ltvi_tvitem.pictureindex = 3
ltvi_tvitem.selectedpictureindex = 5
tv_1.InsertItemLast(ll_newitem,ltvi_tvitem)//用到父句柄
end if
next
next
tv_1.setredraw(True)
dw_1.SetTransObject(SQLCA)
newstone1 2003-08-19
  • 打赏
  • 举报
回复
我的也是啊,关注Ing!
jdsnhan 2003-08-19
  • 打赏
  • 举报
回复
这里:
lds_emp = create datastore
lds_emp.dataobject = "dw_tree_client" //客户数据
lds_emp.settransobject(sqlca)
lds_emp.retrieve()
你把所有客户的信息都显示出来了,那肯定是所有的客户都显示在每一个站点下了
在第二层循环即:
ll_row2 = lds_emp.retrieve(lds_dept.getitemstring(i,"st_id"))
// 此时,根据父级的站点号检索对应的用户,然后插入到子级
for j = 1 to ll_row2 step 1

// 不知道该怎么办!!!!
//
ltvi_tvitem.label = lds_emp.getitemstring(j,"user_com")
ltvi_tvitem.data = lds_emp.getitemstring(j,"user_id")
ltvi_tvitem.pictureindex = 3
ltvi_tvitem.selectedpictureindex = 5
tv_1.InsertItemLast(ll_newitem,ltvi_tvitem)//用到父句柄

next
klbt 2003-08-19
  • 打赏
  • 举报
回复
数据窗口排序按user_id,user_addcode。
networld2002 2003-08-19
  • 打赏
  • 举报
回复
学习
runsoft 2003-08-19
  • 打赏
  • 举报
回复
string fuid,fucom
long ll_handle
string ls_oldsql,ls_newsql
//增加
ls_oldsql = lds_emp.getsqlselect()
ls_newsql = ls_oldsql + " where user_addcode = '" + lds_dept.getitemstring(i,"st_id") +"'"
lds_emp.setsqlselect(ls_newsql)
lds_emp.retrieve()
lds_emp.setsqlselect(ls_oldsql)
ll_row2 = lds_emp.rowcount()
for j = 1 to ll_row2 step 1

// 不知道该怎么办!!!!
//
ltvi_tvitem.label = lds_emp.getitemstring(j,"user_com")
ltvi_tvitem.data = lds_emp.getitemstring(j,"user_id")
ltvi_tvitem.pictureindex = 3
ltvi_tvitem.selectedpictureindex = 5
tv_1.InsertItemLast(ll_newitem,ltvi_tvitem)//用到父句柄

next

1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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