>Column4 comes from a related table and for some reason, I'm not getting it to reliably return the child value for the current row.
If you want to make sure that the related record is reliably pointed to, you need to do a proper jump to the current record, like...
skip 0 in (oGrid.rowsource)
or
goto recno(oGrid.rowsource) in (oGrid.rowsource)
where oGrid is a reference to the grid.