Mike,
Create a view for the recodsource for your grid. Then put the view in the data environment of the form, set the recordsourcetype to Alias and the recordsource to the view's alias. When you need to refresh teh view with new data, Rquery("TheView") and the grid will refresh with new data.
The problem you are having is one that many folks bump into, that is that your code does something to destroy the grid's recordsource (like issuing teh SELECT command again). When the recordsource for a gird disappears, the grid loses its mind and forgets many of teh settings. You can either wrestle with that by resetting all of the properties after you destroy and recreate the recordsource, or you can switch to using views which can be requeried without destroying them.