忙了一下午了,一个关于数据过滤的问题
一个表,想根据其中一列的值提取部分数据到DW,然后往里头写数。
开始,这样做
SetFilter()-->根据行号循环,但Filter后的行数仍保持原来的总行数,而没有变成Filter后的行数,因此当用行号循环时,无法只向符合条件的行里填数;
接着,又这样:
ls_select=dw_1.Describe("datawindow.table.select")
ls_select=ls_select+"where 三个波浪号"列三个波浪号"......总之,光凑波浪号就耗费了两个小时,我恨透了波浪号了!好不容易把波浪号凑好了,可行号还是不改,最后才发现Where子句不能放在order by子句后头,于是又确定order by在整句中的位置,然后根据位置用Replace往句中插Where子句。好不容易构造成了一整句,用dw_1.Modify进行应用,结果dw_1的select语句在插入的where子句后被截了个精光。又试着用“select * from 表 where 列=~'+条件+~' order by 列"这样的没有波浪号的简单句子,dw_1的select语句倒是显示出来了,可行数仍是总行数。
最后,在数据窗口对象中定义检索参数,然后在CODE中RETRIEVE相应的参数,才实现了按规定的条件读数并写数的目标。
我想说的是:对于动态改变DW的数据源,我真得很头痛;在构造SQL语句时,波浪号太可恶了!
先谢谢读完这些话的朋友,如果您竟然明白了我说的是什么,进而要发表高见,我简直太荣幸了。