Kbase 19099: ADM2. How To Use A Dynamic TEMP-TABLE With A Dynamic BROWSE Widget
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  15/10/2008 |
|
Status: Verified
GOAL:
How to Use a Dynamic TEMP-TABLE with a Dynamic BROWSE Widget.
FACT(s) (Environment):
Progress 9.x
FIX:
The following Technical Note demonstrates how to use a Dynamic Temp-Table with a Dynamic Browse Widget.
DEFINE VARIABLE ttHandle AS HANDLE NO-UNDO. /* TempTable Handle */
DEFINE VARIABLE b1Handle AS HANDLE NO-UNDO. /* TempTable Buffer Handle */
DEFINE VARIABLE b2Handle AS HANDLE NO-UNDO. /* Buffer Handle for 1st Input Table */
DEFINE VARIABLE b3Handle AS HANDLE NO-UNDO. /* Buffer Handle for 2nd Input Table */
DEFINE VARIABLE qrHandle AS HANDLE NO-UNDO. /* Query Handle */
DEFINE VARIABLE brHandle AS HANDLE NO-UNDO. /* Browse Handle */
DEFINE VARIABLE bcHandle AS HANDLE NO-UNDO. /* Browse Column Handle */
DEFINE VARIABLE tcHandle AS HANDLE NO-UNDO. /* TempTable Column Handle */
DEFINE VARIABLE intVar AS INTEGER NO-UNDO.
DEFINE FRAME xx WITH WIDTH 70 THREE-D CENTERED 12 DOWN
TITLE "Dynamic Temp-Table Demo" VIEW-AS DIALOG-BOX.
CREATE WIDGET-POOL "dynTemp" NO-ERROR.
CREATE TEMP-TABLE ttHandle IN WIDGET-POOL "dynTemp".
ttHandle:ADD-NEW-FIELD("state","char", 0,"x(6)").
ttHandle:ADD-NEW-FIELD("stateName","char", 0, "x(15)").
ttHandle:ADD-NEW-FIELD("SalesRep","char", 0, "x(10)").
ttHandle:ADD-NEW-FIELD("repName","char", 0, "x(25)").
ttHandle:TEMP-TABLE-PREPARE("statex").
b1Handle = ttHandle:DEFAULT-BUFFER-HANDLE.
b2Handle = BUFFER state:HANDLE.
b3Handle = BUFFER SalesRep:HANDLE.
FOR EACH state NO-LOCK, EACH SalesRep WHERE SalesRep.Region = State.Region:
b1Handle:BUFFER-CREATE.
b1Handle:BUFFER-COPY(b2Handle).
b1Handle:BUFFER-COPY(b3Handle).
END.
CREATE QUERY qrHandle IN WIDGET-POOL "dynTemp".
qrHandle:SET-BUFFERS(b1Handle).
qrHandle:QUERY-PREPARE("FOR EACH statex").
qrHandle:QUERY-OPEN.
CREATE BROWSE brHandle IN WIDGET-POOL "dynTemp"
ASSIGN X = 15
Y = 20
WIDTH = 60
DOWN = 10
FRAME = FRAME xx:HANDLE
READ-ONLY = FALSE
SENSITIVE = TRUE
QUERY = qrHandle
FONT = 6.
DO intVar = 1 TO b1Handle:NUM-FIELDS:
ASSIGN tcHandle = b1Handle:BUFFER-FIELD(intVar).
brHandle:ADD-LIKE-COLUMN(tcHandle).
END.
ASSIGN bcHandle = brHandle:FIRST-COLUMN
intVar = 0.
DO WHILE VALID-HANDLE(bcHandle):
ASSIGN intVar = intVar + 1
tcHandle = b1Handle:BUFFER-FIELD(intVar)
bcHandle:LABEL = tcHandle:NAME.
bcHandle = bcHandle:NEXT-COLUMN
END.
VIEW FRAME xx.
WAIT-FOR CLOSE OF THIS-PROCEDURE.
DELETE WIDGET-POOL "dynTemp" NO-ERROR.