Consultor Eletrônico



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).