首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

怎么判断datawindow里面某个栏位是否存在

2013-06-25 
如何判断datawindow里面某个栏位是否存在dw_1.object.pt_price.visible 1以上的语句,如果dw_1里面pt_pri

如何判断datawindow里面某个栏位是否存在
dw_1.object.pt_price.visible = 1
以上的语句,如果dw_1里面pt_price存在,则这写是没有问题,
但是如果pt_price这个栏位不存在,则PB肯定报错,崩溃。


所以想在这条语句之前加个判断, 
if 存在 then 


想请教一下,如果来判断这个. 除判断栏位,判断 计算列, text ,图片控制,button等。

在此先感谢了。
[解决办法]
遍历数据窗口中所有对象


string ls_msg 
    string ls_datatype 
    string ls_value,ls_tag 
    string ls_objects 
    String ls_obj[], ls_Obj_Band[]  
    long li_pos, li_i 
     
    ls_Objects = dw_1.Describe("datawindow.objects")  
    ls_Objects += '~t'  
    DO While ( Pos( ls_Objects, "~t" ) > 0)  
        li_i ++  
        li_pos = Pos( ls_Objects, "~t" )  
        ls_obj[li_i] = Left( ls_Objects, li_pos - 1 )  
        ls_Objects = Right( ls_Objects, Len(ls_Objects) - li_pos)  
          
        if dw_1.describe(ls_obj[li_i]+".band") = "detail" then 
            if dw_1.describe(ls_obj[li_i]+".type") = "column" or dw_1.describe(ls_obj[li_i]+".type") = "compute" then 
                 
                ls_tag = dw_1.describe(ls_obj[li_i]+".tag") 
                if isnull(ls_tag) or ls_tag = "" then continue //tag为空则继续 
                 
                ls_datatype = dw_1.describe(ls_obj[li_i]+".ColType")  
                choose case left(ls_datatype,4) 
                case "char" 
                    ls_value = dw_1.getitemstring(1,ls_obj[li_i]) 
                case "long" 
                    ls_value = string(dw_1.getitemnumber(1,ls_obj[li_i])) 
                case "deci" 
                    ls_value = string(dw_1.getitemdecimal(1,ls_obj[li_i])) 
                case "date" 


                    ls_value = string(dw_1.getitemdatetime(1,ls_obj[li_i]),"YYYY-MM-DD") 
                end choose 
                if isnull(ls_value) or ls_value="" then  
                    ls_msg += ls_tag + "~r~n" 
                end if 
            end if 
        end if 
          
    loop  

然后处理你需要的对象类型或名字
[解决办法]
dw_1.describe('pt_price.name')='!' //证明不存在

热点排行