2013-05-07 50 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”。