TIPTOP 复制单身数据(自己写的一个公共函数cl_copybody,还有很多问题没实现,希望多交流)

DATABASE ds        
 
GLOBALS "../../config/top.global"    
----------------------------------------------------------------------------------------------------------------------------
----Function........: 单身数据直接复制到EXCEL 
----Description.....: 特么太忙,没有时间做成公共函数.
----................: EXCEL内容复制到单身暂时没空写,有想法的童鞋私聊  
----................: 为了节约代码,无关紧要的判断去掉,整个功能30行代码
----Example.........: CALL cxmt666_copybody(base.TypeInfo.create(Wait_CT_List),Wait_CT_List.GetLength())
----Date&Author.....: add by kellan  2015-04-23  QQ: 309200966 联系人:匡匡
----version1.0......: marked by kellan   2015-04-29 (无抬头内容)

----version2.0......: modified by kellan 2015-04-29 (增加抬头内容,针对多单身复制,加上page参数传入,page中英文皆可)
----Example.........: CALL cxmt666_copybody(base.TypeInfo.create(Wait_CT_List),Wait_CT_List.GetLength(),page)
----Question........: 待解决: 1.单身有栏位排序(或者顺序拖动),复制的时候栏位不会按照改变后的顺序;
--------------------:      2.单身有栏位隐藏,出现一些空白列;
--------------------:      3.多页签一起复制;
--------------------:      4.(程序逆推)EXCEL多行内容复制粘贴进程序单身;
----------------------------------------------------------------------------------------------------------------------------
{#(version1.0)版本一:
 FUNCTION cl_copybody(l_tab,l_len)
  DEFINE  l_tab                   om.DomNode,
          l_len                   INTEGER,
          l_value                 STRING,
          l_str1                  STRING,
          l_str2                  STRING          
  DEFINE  n_field                 om.DomNode,
          n_record                om.DomNode,
          nl_record               om.NodeList,
          nl_field                om.NodeList
  DEFINE  l_i                     LIKE type_file.num10                                             
  DEFINE  l_j                     LIKE type_file.num10  
  DEFINE  i                       INTEGER   #本来用来检测复制成功与否的状态,为了节约代码就没写判断了.
  DEFINE  l_show                  LIKE type_file.chr1
  DEFINE  l_values                STRING 
  
   LET l_value = NULL
   LET l_str1 = NULL 
   LET l_str2 = NULL             
   LET nl_record = l_tab.selectByTagName("Record")
    FOR l_i=1 to nl_record.getLength()
       LET n_record = nl_record.item(l_i)
       LET nl_field=n_record.selectByTagName("Field")   
       LET l_str1 = NULL 
       FOR l_j = 1 TO nl_field.getLength()
           LET n_field = nl_field.item(l_j)          
           LET l_value = n_field.getAttribute("value")
           LET l_str1 = l_str1,l_value,'%'                               
       END FOR
       LET l_str2 = l_str2,l_str1,'\n'   
    END FOR
      CALL cl_replace_str(l_str2,'%','\t') RETURNING l_str2  
    CALL ui.Interface.frontCall( "standard", "cbclear",[], [i] )    #清除当前剪切板里的内容 
      CALL ui.Interface.frontCall( "standard", "cbset",[l_str2],[i] ) #设置当前剪切板里的内容 
  CALL cl_err("复制成功,请直接在excel中粘贴!","!","1")<span style="font-family: Arial, Helvetica, sans-serif;">         </span>
END FUNCTION }


###(version2.0)版本二:  
FUNCTION cl_copybody(l_tab,l_len,p_currentpage)
  DEFINE  l_tab                   om.DomNode,
          l_len                   INTEGER,
          l_value                 STRING,
          l_str1                  STRING,
          l_str2                  STRING          
  DEFINE  n_field                 om.DomNode,
          n_record                om.DomNode,
          nl_record               om.NodeList,
          nl_field                om.NodeList
  DEFINE  l_i                     LIKE type_file.num10                                             
  DEFINE  l_j                     LIKE type_file.num10  
  DEFINE  i                       INTEGER   #本来用来检测复制成功与否的状态,为了节约代码就没写判断了.


  DEFINE  n_root                  om.DomNode,
          n_table,n_tablecolumn   om.DomNode,  
          lst_table               om.NodeList,
          l_strcol                STRING,
          l_str4                  STRING
  DEFINE  l_laststr               STRING
  DEFINE  w                       ui.Window  
  DEFINE  n_node                  om.DomNode  
  DEFINE  lst_page                om.NodeList  
  DEFINE  l_page                  om.DomNode 
  DEFINE  l_pagestr               STRING 
  DEFINE  l_pagechinese           STRING
  DEFINE  l_pagecount             INTEGER 
  DEFINE  l_pi                    INTEGER
  DEFINE  p_currentpage           STRING  
 -- DEFINE  l_show                  LIKE type_file.chr1 #处理隐藏栏位


     LET l_str1 = NULL 
     LET l_str2 = NULL   
     LET l_str4 = NULL  
     LET l_value = NULL       
     LET l_strcol = NULL 
     LET l_pagestr = NULL 
     LET l_laststr = NULL    
     LET l_pagechinese = NULL 
------------------------------------------------------------------------- 表头部分
    #begin用于取页签名称
     LET w = ui.Window.getCurrent()
     LET n_node = w.getNode()  
     LET lst_page = n_node.selectByTagName("Page")      
     LET l_pagecount = lst_page.getLength()               #总的page页面数量
     FOR l_pi = 1 TO l_pagecount
      LET l_page = lst_page.item(l_pi)
      LET l_pagestr = l_page.getAttribute('name')      #page英文名   
      LET l_pagechinese = l_page.getAttribute('text')  #page中文名
      #end用于取页签名称 
         DISPLAY l_pagestr,l_pagechinese,l_pagecount
           IF (p_currentpage = l_pagestr OR p_currentpage = l_pagechinese) THEN 
              #begin获取table表头 
               LET n_root = ui.Interface.getRootNode()
               LET lst_table = n_root.selectByTagName("Table")
               LET n_table = lst_table.item(l_pi)
               FOR i=1 TO n_table.getChildCount()
                   LET n_tablecolumn = n_table.getChildByIndex(i)
                   LET l_strcol = n_tablecolumn.getAttribute('text') #获取栏位中文
                 --  LET l_show = n_tablecolumn.getAttribute("hidden") #获取栏位是否隐藏 哈哈哈..这样判断是有问题的.
                 --  IF l_show = "0" OR l_show IS NULL THEN 
                      LET l_str4 =l_str4,l_strcol,'%%%'
                 --  END IF 
               END FOR 
               #end获取table表头  
           END IF 
     END FOR   
------------------------------------------------------------------------- 表头部分<span style="white-space:pre">	</span>
   #begin表身所有数据    
   LET nl_record = l_tab.selectByTagName("Record")
    FOR l_i=1 to nl_record.getLength()   
      LET n_record = nl_record.item(l_i)
       LET nl_field=n_record.selectByTagName("Field")
      LET l_str1 = NULL 
       FOR l_j = 1 TO nl_field.getLength()
          LET n_field = nl_field.item(l_j)
           LET l_value = n_field.getAttribute("value")
          -- LET l_show = n_field.getAttribute("hidden") #获取栏位是否隐藏 哈哈哈..这样判断是有问题的.
          -- IF l_show = "0" OR l_show IS NULL THEN 
             LET l_str1 = l_str1,l_value,'%%%'          
         -- END IF                                  
       END FOR
      LET l_str2 = l_str2,l_str1,'\n'   
    END FOR
  #end表身所有数据  
   
    LET l_laststr = l_str4,'\n',l_str2
      CALL cl_replace_str(l_laststr,'%%%','\t') RETURNING l_laststr  #组合表头表身,替换'%%%'为table键 
    CALL ui.Interface.frontCall( "standard", "cbclear",[], [i] )       #清除当前剪切板里的内容 
      CALL ui.Interface.frontCall( "standard", "cbset",[l_laststr],[i] ) #设置当前剪切板里的内容 哈哈哈..不得不承认ctrl+c,ctrl+v的强大
      CALL cl_err("复制成功,请直接在excel中粘贴!","!","1")         
END FUNCTION 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值