to open the recordset in a dataenvironment I wouldn't use
dataenv.rsWhatever.open
instead use
if dataenv.rsWhatever.state = 0 then dataenv.Whatever
This makes sure first that your recordset is closed when you try to open it (trying to open an open recordset causes an error. As does closing one that is closed) and then it runs the recordset.