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.