您的位置:首页 > 数据库

PB对数据窗口的查询语句进行动态修改

2017-03-11 20:00 363 查看
通过setsqlselect、dw_1.modify(DataWindow.Table.Select="")和dw_1.object.DataWindow.Table.Select=""均可对数据窗口的查询语句进行动态修改,但有一些区别

1、setsqlselect用法:

ls_select=getsqlselect    //通过getsqlselect取得当前数据窗口的查询语句select……from……,但得不到where子句

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

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

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后面跟随的字段个数以及类型应与建立数据窗口时选择的字段个数和类型相同,否则报错

转自:http://blog.163.com/dj_djd/blog/static/83976802015118442100/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SQL