PB對資料視窗的查詢語句進行動態修改

2022-09-07 21:48:25 字數 1558 閱讀 4952

通過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_h**ing=" …… "

ls_groupby=" …… "

dw_1.object.datawindow.table.select=ls_select+ls_where+ls_h**ing+ls_groupby

dw_1.settransobject(sqlca)

dw_1.retrieve()

dw_1.object.datawindow.table.select=old_select

感覺此語句最為強大,用起來也順手,我喜歡

注意:在動態修改sql語句時,select段可以修改,但應確保select後面跟隨的字段個數以及型別應與建立資料視窗時選擇的字段個數和型別相同,否則報錯

**:

pb根據sql語句生成資料視窗

string ls sql,ls syntax,ls error ls sql mle 1.text ls syntax sqlca.syntaxfromsql ls sql,style type grid ls error if len ls error 0 then messagebox err...

使用SQL語句對資料進行簡單報表彙總

最近在製作報表時,遇到乙個稍稍複雜一點的報表需求,即使用者希望報表能對統計的資料進行分類小計,如下 而我之前的統計都是使用 group by 來對資料進行簡單的彙總,如下 所以對這樣的新的需求覺得一時無從下手,詢問了同事後才知道,可以使用 rollup 統計函式 也稱分析函式 來解決這個問題,查詢資...

PB中查詢到被修改過的資料視窗行

在實際開發過程中,乙個思維嚴謹的程式設計師通常會在使用者退出某個視窗前檢查視窗內的資料是否被修改,如果資料被改動過,則提醒使用者是否儲存修改.下面是pb中顯示被修改過的資料視窗行的實用 integer rc long nbrrows,ll row 0,count 0 dw status.accept...