我有2个DataStore,lds_header和lds_detail的组合,它们在1个DataWindow中获取数据。我根据标题的列设置了DataWindow的列。
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 Save AS方法时,如何删除细节段的不必要的列?
实际上,我能够使用FileOpen方法传递预期的输出,然后使用字符串连接,但FileOpen方法在保存字符串值方面存在限制,这就是我想在DataWindow SaveAs方法中进行导出的原因。 / p>
答案 0 :(得分:2)
我试图弄清楚如何处理上述问题。这行脚本dw_Outbound.Modify("DESTROY i")
返回不正确的语法。如何在不删除数据的情况下删除列?
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
答案 1 :(得分:2)
仅导出DataWindow中某些列的最简单方法是设置数据源,以便所需的列是前N列。我将使用所有列dw_all调用DataWindow。接下来将dw_all保存为dw_some,然后从数据源中删除N之后的列。然后,假设dw_all在ds_all中并且包含您的数据,并且dw_some在ds_some中并且为空:
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中的数据源:
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]
注意:确保rowcount为>在尝试使用这样的数据表达式之前为0。
答案 2 :(得分:0)
我认为如果您使用SaveAs方法,那么将导出所有列,这些列在选择列表中。无论是否可见,它都是可见的。使用destroy和create,您只需为选择列表中的列创建一个控件。如果您不想导出多个列,或者您想要重命名列的“标签”,我认为您需要一个单独的数据窗口,其中包含您要导出的列,您需要将数据从原始数据窗口复制到“导出” “数据窗口。这是你的问题吗?
溴。的Gabor