LOCAL loForm, loGrid, lcCursorName, lnRow, lcControlSource, lcNewValue, lcReplaceCmd loForm = SFT && Get a reference to the active form (form with focus) loGrid = loForm.pageframe1.page1.cont1.grid1 && Replace "pageframe1", "page1", "cont1", and "grid" with the actual names of the controls * Get the Cursor/Table name from the Grid's RecordSource property lcCursorName = loGrid.RecordSource IF USED(lcCursorName) AND !EMPTY(lcCursorName) AND TYPE("lcCursorName") = "C" * Find the column index by ControlSource lnCol = 0 FOR lnIndex = 1 TO loGrid.ColumnCount lcControlSource = loGrid.Columns(lnIndex).ControlSource IF lcControlSource = "FI.REF" lnCol = lnIndex EXIT && Exit the loop once "REF" column is found ENDIF ENDFOR IF lnCol > 0 * Loop through the rows and modify the data in the underlying cursor FOR lnRow = 1 TO _TALLY IF VARTYPE(EVAL(lcControlSource)) = "C" && Check if the field is a string (character) lcNewValue = "Novaref" && Replace with your desired new value lcReplaceCmd = 'REPLACE ' + lcControlSource + ' IN (lcCursorName) WITH (lcNewValue) FOR RECNO() = lnRow AND EMPTY(EVAL("' + lcControlSource + '"))' &lcReplaceCmd && Execute the REPLACE command ENDIF ENDFOR ELSE ? "Column 'REF' not found in the grid." ENDIF ELSE ? "Invalid or empty cursor name in the grid's RecordSource." ENDIF * Refresh the grid to reflect the changes loGrid.Refresh() READ EVENTSsomeone could help me!