Consultor Eletrônico



Kbase P9628: How to retrieve column values from a Smart Browser with multiple row selection enabled ?
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   10/16/2008
Status: Verified

GOAL:

How to retrieve column values from a Smart Browser with multiple row selection enabled ?

FACT(s) (Environment):

Progress 9.x
OpenEdge 10.x

FIX:

From within a SmartDataBrowser there is no access to rowObject records. However
the data is available through dynamic widgets like QUERY, BUFFERS and FIELDS.
Here is a sample code for a multiple smart data Browser which retrieves, into a comma delimited list, the "state" fields from "state" table.
The QUERY in data source SDO is defined as FOR EACH state.

DEF VAR vc AS CHARACTER NO-UNDO.
DEF VAR intSub AS INTEGER NO-UNDO.

DEFINE VARIABLE hQuery AS HANDLE.
DEFINE VARIABLE hBrowse AS HANDLE.
DEFINE VARIABLE hBuffer AS HANDLE.
DEFINE VARIABLE hField AS HANDLE.

hBrowse = BROWSE {&BROWSE-NAME}:HANDLE.
hQuery = hBrowse:QUERY.
hBuffer = hQuery:GET-BUFFER-HANDLE(1).

DO intSub = 1 TO hBrowse:NUM-SELECTED-ROWS :

hBrowse:FETCH-SELECTED-ROW(intSub).

/* interesting point here */
/* hBUFFER:AVAILABLE is TRUE */
/* but AVAILABLE( rowObject ) is FALSE */

hField = hBuffer:BUFFER-FIELD( "state" ).

IF vc <> "" THEN
ASSIGN vc = vc + "," + STRING( hField:BUFFER-VALUE ).
ELSE
ASSIGN vc = STRING( hField:BUFFER-VALUE ).


END.