Consultor Eletrônico



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.