Kbase P72301: How to implement a select distinct with 4GL using a dynamic
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  3/15/2004 |
|
Status: Unverified
GOAL:
How to implement a select distinct with 4GL using a dynamic query ?
FIX:
/* This sample code ilustrates a select distinct salesrep from pub.customer
written in 4GL and using a dynamic query object
*/
DEFINE VARIABLE hQuery AS WIDGET-HANDLE NO-UNDO.
DEFINE VARIABLE hBuffer AS WIDGET-HANDLE NO-UNDO.
DEFINE VARIABLE fh AS WIDGET-HANDLE EXTENT 11 NO-UNDO.
DEF VAR i AS INTEGER.
DEF VAR j AS INTEGER.
DEFINE TEMP-TABLE cust-temp
FIELD cust-name LIKE customer.name
FIELD sales-rep LIKE customer.salesrep
INDEX sales-idx sales-rep DESCENDING.
CREATE BUFFER hBuffer FOR TABLE 'customer':U.
CREATE QUERY hQuery.
hQuery:SET-BUFFERS(hBuffer).
hQuery:QUERY-PREPARE('FOR EACH customer NO-LOCK':U).
hQuery:QUERY-OPEN().
IF hQuery:QUERY-OPEN THEN
REPEAT:
hQuery:GET-NEXT().
IF hQuery:QUERY-OFF-END THEN LEAVE.
j=3.
fh = hBuffer:BUFFER-FIELD(j). /* customer name */
i=11.
fh = hBuffer:BUFFER-FIELD(i). /* salesrep of customer */
FIND cust-temp WHERE
cust-temp.sales-rep = fh[i]:STRING-VALUE() NO-ERROR.
IF NOT AVAIL cust-temp THEN DO:
CREATE cust-temp.
ASSIGN
cust-temp.cust-name = fh[j]:BUFFER-VALUE()
cust-temp.sales-rep = fh[i]:BUFFER-VALUE().
DISPLAY cust-temp.sales-rep.
END.
END.
hQuery:QUERY-CLOSE().
DELETE OBJECT hQuery.
DELETE OBJECT hBuffer.