这个问题和数据窗口导出到Excel有关。
原来一直使用DW2xls做导出成EXCEL,但对于数据量大的数据窗口该方法无法忍受其性能,导出10000行数据通常需要30分钟以上,因此退而求其次,直接将需要导出的数据窗口的数据COPY到一个DATASTORE中,然后对DATASTORE SAVEAS成EXCLE,原来的方法是逐行循环使用Describe( "Evaluate( 'LookupDisplay.....去替换那些DDW中的data value成display value,这样可以将10000行数据的导出速度提高到8分钟左右,但是这样的速度还是不尽如人意的。
因此我现在有个想法,就是能否不用行循环去实现这样的功能,直接对列进行操作,将整列全部替换,而不使用逐行循环,不知道能否实现这样的想法。
如果能实现这样的想法的话,估计2分钟内应该能导出万行级的数据。
请高手指教。。。。。
------解决方案--------------------
可以这样:
for ll_cnt = 1 to Long(dw_1.Object.DataWindow.Column.Count)
ls_style = dw_1.Describe( "# " + string(ll_cnt) + ".Edit.Style ")
if Lower(trim(ls_style)) = "dddw " then
dw_1.GetChild(dw_1.Describe( "# " + string(ll_cnt) + ".name "),ldwc_dic)
ldwc_dic.SetTransObject(sqlca)
ldwc_dic.Retrieve()
end if
next
------解决方案--------------------
已经测试过了,10000条记录速度0.4秒,不过建议还是不要在原数据窗口上直接修改,可以rowscopy到其它地方再处理.
------解决方案--------------------
稍微有点麻烦,可以这样解决
string ls_colname = 'a '
choose case long(dw_1.describe(ls_colname+ '.id '))
case 1
dw_1.object.#1.current = dw_1.object.b[1,dw_1.rowcount()]
case 2
dw_1.object.#2.current = dw_1.object.b[1,dw_1.rowcount()]
case 3
dw_1.object.#3.current = dw_1.object.b[1,dw_1.rowcount()]
end choose