[Stackoverflow] [Progress OpenEdge ABL] How to pass a temp-table to a window from a procedure file

Status
Not open for further replies.
B

Bazilby

Guest
I'm using a window(.w) that has a button that passes a variable to a procedure(.p), does its magic and then needs to return the results in a temp-table back to the window for display.

The .w file

Definitions

DEFINE TEMP-TABLE Return_Results
FIELD tt_var1Return AS CHARACTER FORMAT "x(20)"
FIELD tt_var2Return AS CHARACTER FORMAT "x(30)"
FIELD tt_var3Return AS CHARACTER FORMAT "x(30)"
FIELD tt_var4Return AS CHARACTER FORMAT "x(30)"
.


Button code

ON CHOOSE OF RecordFinder IN FRAME Dialog-Frame
DO:
DEFINE VARIABLE varInput AS CHARACTER NO-UNDO
DEFINE VARIABLE Return_Results REFERENCE-ONLY. /* <--- I'm pretty sure this is the problem */

varInput = Fill-In:SCREEN-VALUE.

RUN RecordFinder.p(INPUT varInput, OUTPUT Return_Results).

FOR EACH Return_Results:

Display Return_Results.

END.


END.


The .p file

i'm omitting some stuff that i think may not be necessary, but it basically takes the input variable, matches it and generates a temp-table from the results and assign those records to a new temp-table that will get passed back.

Definitions

DEFINE INPUT PARAMETER windowInput AS CHARACTER NO-UNDO.
DEFINE OUTPUT PARAMETER Results_Output

DEFINE TEMP-TABLE Original_tt
FIELD tt_var1Original AS CHARACTER FORMAT "x(20)"
FIELD tt_var2Origianl AS CHARACTER FORMAT "x(30)"
FIELD tt_var3Original AS CHARACTER FORMAT "x(30)"
FIELD tt_var4Original AS CHARACTER FORMAT "x(30)"
.

DEFINE TEMP-TABLE Return_tt
FIELD tt_var1Return AS CHARACTER FORMAT "x(20)"
FIELD tt_var2Return AS CHARACTER FORMAT "x(30)"
FIELD tt_var3Return AS CHARACTER FORMAT "x(30)"
FIELD tt_var4Return AS CHARACTER FORMAT "x(30)"
.


*additional code that works*


The next bit of code is for sorting the result of the temp table where it matches the input variable

FOR EACH Original_tt WHERE Original_tt.Var1 = windowInput:

CREATE Return_tt.
BUFFER-COPY Original_tt TO Results_tt

Return_tt.tt_var1Return = Original_tt.tt_var1Original.
Return_tt.tt_var2Return = Original_tt.tt_var2Original.
Return_tt.tt_var3Return = Original_tt.tt_var3Original.
Return_tt.tt_var4Return = Original_tt.tt_var4Original.

/* This is where I know I'm wrong */
/* I figured you could assign the Return_tt to the output variable */

Results_Output = Return_tt.
END.


I hope this not too convoluted.

Continue reading...
 
Status
Not open for further replies.
Top