最近接手了一个关于文本处理的项目,数据如下:
DEPTH SP ML1 ML2 CALS RT CILD R2.5 GR DT BS
1450.125 106.266 0.001 0.002 24.195 2.185 406.685 1.969 10.552 346.144 24.770
1450.250 106.265 0.001 0.002 24.195 2.129 415.175 1.919 10.577 350.513 24.770
1450.375 106.283 0.001 0.002 24.195 2.067 421.774 1.875 10.731 354.600 24.770
1450.500 106.333 0.001 0.002 24.208 2.029 423.681 1.839 10.826 358.675 24.770
1450.625 106.397 0.001 0.002 24.266 2.011 422.446 1.803 10.726 362.464 24.770
第一行是我处理后的列名,具体要求是按列提取数据。可是列不固定,这里有11列,其他的文本可能是12,13列。按用户提供的要求列提取数据。
我有两个想法,第一个是将数据存到excel表,需要调用ole,可能打包的时候也很不方便,此外需要用暂时的excel,用powerbuilder不方便。第二个是用数据窗口处理,列名不固定,应该需要动态的生成一个表,可是怎么才能和数据窗口建立连接阿,总共就那么几个类型。高手有没有什么更好的想法或者是对上面的想法有什么指点,不吝赐教,谢谢了。
我是新人,分数不多,别嫌弃。
------解决方案--------------------
没看明白楼主是要把DW中的数据导出成文本呢?还是要把文本里的数据导入到DW?
如果是要导出
动态生成SQL语句,然后构造DW,再SAVE AS就好了。
string sql_syntax,presentation_str,ERRORS,dwsyntax_str
sql_syntax = "select DEPTH,SP,ML1,ML2,CALS from testtable"//构造SQL语句
presentation_str = "style(type=grid)" //grid,Tabular,form,DW类型
dwsyntax_str = SQLCA.SyntaxFromSQL(sql_syntax,presentation_str, ERRORS)//校验SQL
IF Len(ERRORS) > 0 THEN
MessageBox("提示", &
"SyntaxFromSQL caused these errors: " + ERRORS)
RETURN
END IF
dw_1.Create( dwsyntax_str, ERRORS)
IF Len(ERRORS) > 0 THEN
MessageBox("提示", &
"Create cause these errors: " + ERRORS)
halt close
RETURN
END IF
dw_1.settransobject(sqlca)
dw_1.retrieve()
if dw_1.rowcount() > 0 then
dw_1.saveas()
end if
-------------------
如果要导入,比较麻烦
同上先构造DW,然后设置DW的UPDATE属性(这里的设置比较麻烦),再导入文本。
------解决方案--------------------
LineMode模式打开文本,读取第一行数据,断开字段名:
根据字段名写出SQL语句
根据SQL语句动态生成窗口
用窗口IMPORTFILE导入数据
存盘
OK!