When OracleDataset connected to DBGridEh, after execute RefreshRecord cursor is moved to the next record. To fix this bug you need to add at the beginning of the procedure TOracleDataSet.RefreshRecord - UpdateCursorPos.