addchild(long handle1)
long li_i1,li_len,li_len2,ii_xx,li_count
string tmp
treeviewitem tvi
tv_info.getitem(handle1,tvi)
li_len = len(string(tvi.data))
li_len2 = li_len +2
tmp = "len(trim(dept_code)) = " +string(li_len2)+" and &
left(dept_code,"+string(li_len)+") = '"+string(tvi.data)+"'"
dw_temp.setfilter(tmp)
dw_temp.filter()
dw_temp.setsort("#1 A")
dw_temp.sort()
li_count = dw_temp.rowcount()
//messagebox("",li_count)
if (li_count >=1) then
for li_i1=1 to li_count
// tvi.data = dw_temp.getitemstring(li_i1,"dept_code")
// tvi.label = dw_temp.getitemstring(li_i1,"dept_name")
tvi.data = dw_temp.object.dept_code[li_i1]
tvi.label = dw_temp.object.dept_name[li_i1]
ii_xx=tv_info.insertitemlast(handle1,tvi)
// messagebox("",tvi.label)
addchild(ii_xx)
tv_info.getitem(ii_xx,tvi)
// messagebox("",tvi.label)
next
end if
return
注明: 如果把自调用屏蔽了完全没问题,一用自调用就出错
错误出现在 tvi.data = dw_temp.getitemstring(li_i1,"dept_code") 这段
---------------------------
PowerBuilder Application Execution Error (R0039)
---------------------------
Application terminated.
Error: Error accessing external object property dept_code at line 20 in function addchild of object w_1.
---------------------------
确定
---------------------------
整了一晚上,没法了,各位老大 给点思路吧
------解决方案--------------------
我看楼上说的都不对,问题应该就出在你的数据窗口dw_temp:
第一层的时候是没问题,但是当进入递归自己调用自己的时候,你就把dw_temp重新filter过了,所以,他递归出来返回上一层的时候,dw_temp的数据已经被你改变过了,不能返回。楼主细心想下这个思路先啦,至于解决办法,我相信你可以的。。。。。。。。还不懂的邮件这个qq253794849。。。记得给分!!!