SteveJBarratt
New Member
There have been many threads about the use of multiple selection browses, however I have never seen a working example posted here.
I am using Progress 9.1D05 on NT.
I have a dynamic query attached to a dynamic browse that is defined as multiple select. I use the normal method of using num-selected-rows and fetch-selected-row(x). I then try to step through the selected rows, but find I have access to the last select row only. I have tried all the examples that I have found on this forum, and I can not get any of them to work. The problem may be my code, I here you say! I have managed to get the multiple select to work by using a static query and a dynamic browse. Is this a bug? Is there a undocumented workaround?
I list below the test code I am 'playing' with, it is not my development program!! The code was modified from a working copy from the progress help screens.
DEFINE VARIABLE browse-hdl AS WIDGET-HANDLE.
DEFINE VARIABLE brws-col-1-hdl AS WIDGET-HANDLE.
DEFINE VARIABLE brws-col-2-hdl AS WIDGET-HANDLE.
DEFINE VARIABLE brws-field-hdl AS WIDGET-HANDLE.
DEFINE VARIABLE buff-field-hdl AS WIDGET-HANDLE.
DEFINE VARIABLE hQuery AS WIDGET-HANDLE.
DEFINE VARIABLE b_ean AS WIDGET-HANDLE.
DEFINE VARIABLE b_ean_attribute AS WIDGET-HANDLE.
DEFINE VARIABLE hbrowse-column1 AS WIDGET-HANDLE.
DEFINE VARIABLE hbrowse-column2 AS WIDGET-HANDLE.
DEFINE VARIABLE hbrowse-column3 AS WIDGET-HANDLE.
DEFINE VARIABLE i AS INTEGER.
DEFINE BUTTON btn-Display LABEL "Display".
DEFINE BUTTON btn-quit LABEL "&Quit" AUTO-ENDKEY.
/* Create handles for buffers for query */
CREATE QUERY hQuery.
CREATE BUFFER b_ean FOR TABLE "ean".
CREATE BUFFER b_ean_attribute FOR TABLE "ean_attribute".
DEFINE FRAME MyFrame SKIP(20) btn-display btn-quit WITH SIZE 80 BY 22.
/* Set up Query */
hQuery:ADD-BUFFER(b_ean).
hQuery:ADD-BUFFER(b_ean_attribute).
hQuery:QUERY-PREPARE("for each ean no-lock, each ean_attribute of ean no-lock").
hQuery:QUERY-OPEN().
/* Set up Browse */
CREATE BROWSE browse-hdl
ASSIGN
MULTIPLE = TRUE
ROW-MARKER = FALSE
FRAME = FRAME MyFrame:HANDLE
QUERY = hQuery
X = 2
Y = 2
WIDTH = 74
DOWN = 20
VISIBLE = YES
SENSITIVE = TRUE
READ-ONLY = NO.
browse-hdl:QUERY = hQuery.
ASSIGN
/* Define columns for browse */
hbrowse-column1 = browse-hdl:ADD-LIKE-COLUMN("ean.ean")
hbrowse-column1:WIDTH-CHAR = 17
hbrowse-column2 = browse-hdl:ADD-LIKE-COLUMN("ean.description")
hbrowse-column2:WIDTH-CHAR = 35
hbrowse-column3 = browse-hdl:ADD-LIKE-COLUMN("ean_attribute.qty-on-hand")
/* allow last column to fill to end of browse */
browse-hdl:EXPANDABLE = YES.
/* Process Display button */
ON CHOOSE OF btn-display DO:
/* set up loop */
DO i = 1 TO browse-hdl:NUM-SELECTED-ROWS:
/* Get each selected row from browse */
browse-hdl:FETCH-SELECTED-ROW(i).
/* Display columns 1 & 2 in a message box */
MESSAGE i hbrowse-column1:SCREEN-VALUE hbrowse-column2:SCREEN-VALUE
VIEW-AS ALERT-BOX INFO BUTTONS OK.
END.
END.
ON CHOOSE OF btn-quit DO:
QUIT.
END.
ENABLE ALL WITH FRAME MyFrame.
WAIT-FOR CLOSE OF CURRENT-WINDOW.
I am using Progress 9.1D05 on NT.
I have a dynamic query attached to a dynamic browse that is defined as multiple select. I use the normal method of using num-selected-rows and fetch-selected-row(x). I then try to step through the selected rows, but find I have access to the last select row only. I have tried all the examples that I have found on this forum, and I can not get any of them to work. The problem may be my code, I here you say! I have managed to get the multiple select to work by using a static query and a dynamic browse. Is this a bug? Is there a undocumented workaround?
I list below the test code I am 'playing' with, it is not my development program!! The code was modified from a working copy from the progress help screens.
DEFINE VARIABLE browse-hdl AS WIDGET-HANDLE.
DEFINE VARIABLE brws-col-1-hdl AS WIDGET-HANDLE.
DEFINE VARIABLE brws-col-2-hdl AS WIDGET-HANDLE.
DEFINE VARIABLE brws-field-hdl AS WIDGET-HANDLE.
DEFINE VARIABLE buff-field-hdl AS WIDGET-HANDLE.
DEFINE VARIABLE hQuery AS WIDGET-HANDLE.
DEFINE VARIABLE b_ean AS WIDGET-HANDLE.
DEFINE VARIABLE b_ean_attribute AS WIDGET-HANDLE.
DEFINE VARIABLE hbrowse-column1 AS WIDGET-HANDLE.
DEFINE VARIABLE hbrowse-column2 AS WIDGET-HANDLE.
DEFINE VARIABLE hbrowse-column3 AS WIDGET-HANDLE.
DEFINE VARIABLE i AS INTEGER.
DEFINE BUTTON btn-Display LABEL "Display".
DEFINE BUTTON btn-quit LABEL "&Quit" AUTO-ENDKEY.
/* Create handles for buffers for query */
CREATE QUERY hQuery.
CREATE BUFFER b_ean FOR TABLE "ean".
CREATE BUFFER b_ean_attribute FOR TABLE "ean_attribute".
DEFINE FRAME MyFrame SKIP(20) btn-display btn-quit WITH SIZE 80 BY 22.
/* Set up Query */
hQuery:ADD-BUFFER(b_ean).
hQuery:ADD-BUFFER(b_ean_attribute).
hQuery:QUERY-PREPARE("for each ean no-lock, each ean_attribute of ean no-lock").
hQuery:QUERY-OPEN().
/* Set up Browse */
CREATE BROWSE browse-hdl
ASSIGN
MULTIPLE = TRUE
ROW-MARKER = FALSE
FRAME = FRAME MyFrame:HANDLE
QUERY = hQuery
X = 2
Y = 2
WIDTH = 74
DOWN = 20
VISIBLE = YES
SENSITIVE = TRUE
READ-ONLY = NO.
browse-hdl:QUERY = hQuery.
ASSIGN
/* Define columns for browse */
hbrowse-column1 = browse-hdl:ADD-LIKE-COLUMN("ean.ean")
hbrowse-column1:WIDTH-CHAR = 17
hbrowse-column2 = browse-hdl:ADD-LIKE-COLUMN("ean.description")
hbrowse-column2:WIDTH-CHAR = 35
hbrowse-column3 = browse-hdl:ADD-LIKE-COLUMN("ean_attribute.qty-on-hand")
/* allow last column to fill to end of browse */
browse-hdl:EXPANDABLE = YES.
/* Process Display button */
ON CHOOSE OF btn-display DO:
/* set up loop */
DO i = 1 TO browse-hdl:NUM-SELECTED-ROWS:
/* Get each selected row from browse */
browse-hdl:FETCH-SELECTED-ROW(i).
/* Display columns 1 & 2 in a message box */
MESSAGE i hbrowse-column1:SCREEN-VALUE hbrowse-column2:SCREEN-VALUE
VIEW-AS ALERT-BOX INFO BUTTONS OK.
END.
END.
ON CHOOSE OF btn-quit DO:
QUIT.
END.
ENABLE ALL WITH FRAME MyFrame.
WAIT-FOR CLOSE OF CURRENT-WINDOW.