首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除PowerBuilder DataWindow中多余的列

如何删除PowerBuilder DataWindow中多余的列
EN

Stack Overflow用户
提问于 2013-06-06 12:01:21
回答 3查看 4K关注 0票数 2

我有2个DataStore,lds_header和lds_detail的组合,可以在1个DataWindow中获取数据。我已经根据标题的列设置了DataWindow的列。

代码语言:javascript
复制
lds_header has 10 columns to export for header segment - holds in first row only
lds_detail has 5 columns to export for detail segment - holds in second row and so on.
DataWindow has 10 columns.

生成.TXT (制表符分隔)文件的时间。详图段延续了另外5个柱。现在我的问题是,在使用DataWindow另存为方法时,如何删除详图段中不必要的列?

实际上,我能够使用FileOpen方法提供预期的输出,然后使用字符串连接,但是FileOpen方法在保存字符串值方面存在限制,这就是为什么我想在DataWindow SaveAs方法中进行导出。

EN

回答 3

Stack Overflow用户

发布于 2013-06-06 13:25:53

我正在试着想办法做上面的问题。这行脚本dw_Outbound.Modify("DESTROY i")返回了不正确的语法。如何在不删除数据的情况下删除列?

代码语言:javascript
复制
FOR ll_outbound = 2 TO dw_Outbound.RowCount()
            IF dw_Outbound.Object.A[ll_outbound] = 'D' THEN 
                ls_column = dw_Outbound.Object.DataWindow.Column.Count
                FOR li_column = 9 TO Integer(ls_Column)
                    dw_Outbound.Modify("DESTROY i")                 
                    dw_Outbound.Modify("DESTROY j") 
                    dw_Outbound.Modify("DESTROY k") 
                    dw_Outbound.Modify("DESTROY l") 
                    dw_Outbound.Modify("DESTROY m") 
                    dw_Outbound.Modify("DESTROY n") 
                    dw_Outbound.Modify("DESTROY o") 
                    dw_Outbound.Modify("DESTROY p") 
                    dw_Outbound.Modify("DESTROY q") 
                    dw_Outbound.Modify("DESTROY r") 
                    dw_Outbound.Modify("DESTROY s") 
                    dw_Outbound.Modify("DESTROY t") 
                NEXT
            END IF
        NEXT
票数 2
EN

Stack Overflow用户

发布于 2013-06-07 04:25:27

仅导出DataWindow中的某些列的最简单方法是设置数据源,以便所需的列是前N列。我将把所有列都称为dw_all的DataWindow。接下来,将dw_all另存为dw_some,然后从数据源中删除N后面的列。然后,假设dw_all在ds_all中并拥有您的数据,而dw_some在ds_some中且为空:

代码语言:javascript
复制
ll_rows = ds_all.rowcount()
ds_some.object.data[1, 1,ll_rows,N] = ds_all.object.data[1,1,ll_rows,N]

您可以更改ds_all的开始列和结束列,以便从中间或最后N列复制一块列,但是在执行dw_some时必须注意列的类型和大小,而执行另存为并删除N之后的列几乎是万无一失的。

最后,您可以使用不匹配的DataWindows,一次复制一个列和一个列的块。我希望下面的例子能说明为什么用我推荐的方式制作DataWindows更好。判断这是否正确的唯一方法是仔细检查两个DataWindows中的数据源:

代码语言:javascript
复制
dw_excel.Object.Data[1,1,il_rows,1]     = dw_report.Object.Data[1,1,il_rows,1] 
dw_excel.Object.Data[1,2,il_rows,3]     = dw_report.Object.Data[1,3,il_rows,4] 
dw_excel.Object.Data[1,4,il_rows,12]    = dw_report.Object.Data[1,5,il_rows,13] 
dw_excel.Object.Data[1,13,il_rows,13]   = dw_report.Object.Data[1,15,il_rows,15]
dw_excel.Object.Data[1,14,il_rows,14]   = dw_report.Object.Data[1,25,il_rows,25]
dw_excel.Object.Data[1,15,il_rows,20]   = dw_report.Object.Data[1,17,il_rows,22]

注意:在尝试使用这样的数据表达式之前,请确保行数大于0。

票数 2
EN

Stack Overflow用户

发布于 2013-06-06 15:11:19

我认为如果使用SaveAs方法,那么选择列表中的所有列都将被导出。不管它是可见还是不可见。使用销毁和创建,您只需为选择列表中的列创建一个控件。如果您不想导出多个列,或者您想要重命名列的“标签”,我认为您需要一个单独的数据窗口,其中包含您想要导出的列,并且您需要将数据从原始数据窗口复制到“导出”数据窗口。这是你的问题吗?

Br.加博尔

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16953492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档