Kbase P108934: ADM: How to modify the value of a specific field in all the selected rows of a SmartDataBrowse?
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  12/1/2008 |
|
Status: Verified
GOAL:
ADM: How to modify the value of a specific field in all the selected rows of a SmartDataBrowse?
GOAL:
How to change the value of a given field in all the currently selected rows of a SmartDataBrowse?
FACT(s) (Environment):
Windows
Progress 9.x
OpenEdge 10.x
FIX:
1. Write an internal procedure in the SmartDataBrowse with the following code:
/*------------------------------------------------------------------------------
Name: setBalanceValues
Purpose: Change the value of the Balance field in all currently selected rows.
Parameters: pcNewBalanceValue: The new Balance value as a CHARACTER string.
Syntax: RUN setBalanceValues IN h_bcustomer(INPUT pcNewBalanceValue).
------------------------------------------------------------------------------*/
DEFINE INPUT PARAMETER pcNewBalanceValue AS CHARACTER NO-UNDO.
DEFINE VARIABLE iRow AS INT NO-UNDO.
DEFINE VARIABLE hCol AS HANDLE NO-UNDO.
DEFINE VARIABLE hSDO AS HANDLE NO-UNDO.
DEFINE VARIABLE cRowId AS CHARACTER NO-UNDO.
hSDO = DYNAMIC-FUNCTION('getDataSource').
DO iRow = 1 TO BROWSE {&BROWSE-NAME}:NUM-SELECTED-ROWS:
BROWSE {&BROWSE-NAME}:FETCH-SELECTED-ROW(iRow).
ASSIGN
hCol = BROWSE {&BROWSE-NAME}:FIRST-COLUMN.
DO WHILE hCol:NAME <> "Balance" AND VALID-HANDLE(hCol):
hCol = hCol:NEXT-COLUMN NO-ERROR.
END.
hCol:SCREEN-VALUE = pcNewBalanceValue.
hCol:MODIFIED = TRUE.
cRowId = DYNAMIC-FUNCTION('getRowIdent':U IN hSDO).
DYNAMIC-FUNCTION('submitRow' IN hSDO, cRowID, hCol:NAME + CHR(1) + pcNewBalanceValue).
END.
END PROCEDURE.
2. Call the above procedure from anywhere in the application passing it the new Balance value as a CHARACTER string:
RUN setBalanceValues IN h_bCustomer(INPUT cNewBalanceValue).