Kbase P55746: How to use 2 separate buffers on a temp-table
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  2/5/2008 |
|
Status: Unverified
GOAL:
How to use 2 separate buffers on a temp-table
GOAL:
How to use 2 separate buffers on a temp-table, moving through the second buffer one record ahead of the first buffer
FACT(s) (Environment):
All Supported Operating Systems
Progress 9.x
OpenEdge 10.x
FIX:
Sample code:
DEFINE VARIABLE qh AS HANDLE NO-UNDO.
DEFINE VARIABLE bh AS HANDLE NO-UNDO.
DEFINE VARIABLE bh2 AS HANDLE NO-UNDO.
DEFINE VARIABLE fld1 AS HANDLE NO-UNDO.
DEFINE VARIABLE fld2 AS HANDLE NO-UNDO.
DEFINE VARIABLE valRow1 AS INTEGER NO-UNDO.
DEFINE VARIABLE valRow2 AS INTEGER NO-UNDO.
DEFINE VARIABLE tth AS HANDLE NO-UNDO.
DEFINE VARIABLE bhCust AS HANDLE NO-UNDO.
DEFINE VARIABLE vRowid AS ROWID NO-UNDO.
bhCust = BUFFER customer:HANDLE.
CREATE TEMP-TABLE tth.
tth:CREATE-LIKE(bhCust).
tth:TEMP-TABLE-PREPARE("ttCust").
/* creates first buffer against temp-table */
bh = tth:DEFAULT-BUFFER-HANDLE.
/* populates the temp-table */
FOR EACH customer:
bh:BUFFER-CREATE.
bh:BUFFER-COPY(bhCust).
END.
/* creates second buffer against temp-table */
CREATE BUFFER bh2 FOR TABLE tth:DEFAULT-BUFFER-HANDLE BUFFER-NAME 'buffertje':U.
CREATE QUERY qh.
qh:SET-BUFFERS(bh).
qh:QUERY-PREPARE("for each ttCust where custnum < 100").
qh:QUERY-OPEN.
qh:GET-NEXT.
IF qh:QUERY-OFF-END THEN LEAVE.
ELSE
REPEAT WHILE NOT qh:QUERY-OFF-END :
vRowid = bh:ROWID.
qh:GET-NEXT().
IF qh:QUERY-OFF-END THEN LEAVE.
/* sets second buffer to the same position as the first buffer */
bh2:FIND-BY-ROWID(vROWID).
ASSIGN fld1 = bh2:BUFFER-FIELD('custnum':U)
fld2 = bh:BUFFER-FIELD('custnum':U)
valRow1 = fld1:BUFFER-VALUE()
valRow2 = fld2:BUFFER-VALUE().
DISPLAY valRow1 valRow2.
END.
qh:QUERY-CLOSE().
DELETE OBJECT qh.
bh:BUFFER-RELEASE().
bh2:BUFFER-RELEASE().
DELETE OBJECT bh2.
DELETE OBJECT tth.