PB 获取或操作数据窗口语句的方法

时间:2022-03-09 14:13:59

1、setsqlselect用法:

ls_select=getsqlselect    //通过getsqlselect取得当前数据窗口的查询语句

ls_where="  "          //给变量ls_where赋值,将所要添加的限定条件赋给此变量,但应考虑到select子句与where子句之前的空格

dw_1.setsqlselect(ls_select+ls_where)     //通过setsqlselect将生成的查询语句更新至数据窗口

dw_1.event ue_retrieve()

2、dw_1.modify用法:

Old_Select=dw_1.Describe("DataWindow.Table.SQLSelect ")

ls_select=getsqlselect

ls_where="  "

dw_1.modify("DataWindow.Table.Select='" + ls_select+ls_where + " ' ")

dw_1.settransobject(SQLCA)

dw_1.retrieve()

dw_1.object.DataWindow.Table.Select=Old_Select

更新完后可用以下语句取出select语句查看并调试

messagebox("",string(dw_1.Describe("DataWindow.Table.SQLSelect ")))

网上有贴子说此语句只能更改DW查询语句中的where子句,暂未证实

3、dw_1.object.DataWindow.Table.Select=" " 用法:

此种用法与dw_1.modify()基本相同,只是使用dw_1.modify()时,在()中需要使用双引号把其中的DataWindow.Table.Select以及其后的变量引起来,需要考虑引号的对应关系问题,而此种用法则相对简单一些

Old_Select=dw_1.Describe("DataWindow.Table.SQLSelect ")

ls_select=" select …… from ……"

ls_where=" ……"

ls_having=" …… "

ls_groupby=" …… "

dw_1.object.DataWindow.Table.Select=ls_select+ls_where+ls_having+ls_groupby

dw_1.settransobject(SQLCA)

dw_1.retrieve()

dw_1.object.DataWindow.Table.Select=Old_Select

感觉此语句最为强大,用起来也顺手,我喜欢

注意:在动态修改sql语句时,select段可以修改,但应确保select后面跟随的字段个数以及类型应与建立数据窗口时选择的字段个数和类型相同,否则报错