2013-05-07 48 views
0

「的突破」我有一個查詢:進展4GL查詢可選

for each a where ..., 
    each b where ..., 
    each c where ..., 
     break by c.xxx by c.yyy by c.zzz. 

我需要的休息根據用戶輸入改變。

當我嘗試定義查詢:

def query qa for a, b, c. 
if ... then open qa for each a... (as above) 

那麼它將不能編譯,因爲:

BREAK requires query be defined SCROLLING. (14283) 

我怎樣才能「用破」設定的變量?

回答

1

查找「query-prepare」。這就是讓您完全自定義查詢的神奇功能。

我今天早晨要編寫這樣的查詢:

/* dyn.p 
*/ 

define variable tbl as character no-undo. 
define variable brk as character no-undo. 

define variable b as handle no-undo. 
define variable q as handle no-undo. 

tbl = "customer". 
brk = "state". 

create query q. 
create buffer b for table tbl. 

q:set-buffers(b). 

q:query-prepare("for each " + tbl + " break by " + brk). 
q:query-open. 
q:get-next(). 

do while q:query-off-end = false: 

    if q:first-of(1) then clear all. 

    display 
    b:buffer-field('CustNum'):buffer-value() 
    b:buffer-field('Name' ):buffer-value() 
    b:buffer-field('State' ):buffer-value() 
    with 
    down 
    . 

    down 1. 

    q:get-next(). 


end. 

return. 

運行上面的代碼,反對「sports2000」。