Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Replacing value in Grid
Message
 
To
20/07/2023 18:37:06
Luis Santos
Biglevel-Soluções Informáticas, Lda
Portugal
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
01686818
Message ID:
01686819
Views:
57
>Hi,
>
>I have this code to replace value on specific column in my grid, but sometimes nothing happen.
>
>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 EVENTS
>
>
>someone could help me!
>Thanks
>Luis

_TALLY can be 0. I don't see any code that changes this variable.
Also I don't see the need of this complicated code just to replace a value in cursor. You know the cursor name, you know the column name then JUST UPDATE the cursor where this is needed, do not go through grid to do such operation.
Against Stupidity the Gods themselves Contend in Vain - Johann Christoph Friedrich von Schiller
The only thing normal about database guys is their tables.
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform