Y
Youssif Shanshiry
Guest
A STATIC query may be used when the Query Table Buffer(s) and the WHERE Predicate(s) are known and hard wired at design time. For example: DEFINE QUERY qCustomer FOR Customer. OPEN QUERY qCustomer FOR EACH Customer WHERE CustNum 3. GET FIRST qCustomer. REPEAT WHILE AVAILABLE Customer: DISPLAY Customer.CustNum Customer.Name FORMAT "x(30)" Customer.City FORMAT "X(20)". GET NEXT qCustomer. END. A Dynamic query may be used when the Query Table Buffer(s) and the WHERE Predicate(s) are determined at run time. For example: /***************Define variables************/ DEFINE VARIABLE hBufferHandle AS HANDLE NO-UNDO. DEFINE VARIABLE cTableName AS CHARACTER NO-UNDO. DEFINE VARIABLE hQueryHandle AS HANDLE NO-UNDO. DEFINE VARIABLE hFieldHandle AS HANDLE NO-UNDO. DEFINE VARIABLE iFieldCounter AS INTEGER NO-UNDO. DEFINE VARIABLE cWhereClose AS CHARACTER NO-UNDO. ASSIGN cTableName = "Customer" cWhereClose = "WHERE Custnum 3". CREATE BUFFER hBufferHandle FOR TABLE cTableName. CREATE QUERY hQueryHandle. hQueryHandle:SET-BUFFERS(hBufferHandle). hQueryHandle:QUERY-PREPARE("FOR EACH " + cTableName + " " + cWhereClose). hQueryHandle:QUERY-OPEN. REPEAT WITH FRAME myFrame DOWN: hQueryHandle:GET-NEXT(). IF hQueryHandle:QUERY-OFF-END THEN LEAVE. DO iFieldCounter = 1 TO hBufferHandle:NUM-FIELDS: hFieldHandle = hBufferHandle:BUFFER-FIELD(iFieldCounter). IF LOOKUP (hFieldHandle:NAME, "CustNum,Name,City") 0 THEN DISPLAY hFieldHandle:BUFFER-VALUE. DOWN WITH FRAME myFrame. END. /* DO iFieldCounter */ END. /* REPEAT */ DELETE OBJECT hBufferHandle. DELETE OBJECT hQueryHandle. Best Wishes, Youssif H. Shanshiry Principal Technical Support Engineer Progress Software Corporation Telephone: 781-280-3028
Continue reading...
Continue reading...