Jaime,
Besides what Neil has suggested you can also use a "safe-Select" approach for your grid. To do this you establish a cursor with the CREATE CURSOR command to be the record source for your grid. Then when you need to refresh the data you can;
SELECT ... FROM ... INTO CURSOR MyIntermediateCursor
SELECT MyGridCursor
ZAP
APPEND FROM DBF("MyIntermedaiteCursor")
This prevents the grid from losing its setting whenteh cursor is blown away by the SELECT SQL command.