mira yo trabajo con mis dataenviroment's de la sig manera, primero hago la consulta, que debe coincidir con los campos que declaraste en tu dataenviroment y despues la filtro como se me antoja
* Aqui preparo mi consulta, que la filtro de acuerdo a un usuario
imprimir="select * from apoyo where usuario='" & clv_usua & "' Order by Orden"
*Despues compruebo que mi recordset no este abierto, si esta lo cerrare, recuerda que por cada comando de impresion que generas en tu dataenvironment, hay un recordset, en esta caso mi comando de impresion se llama CmdCorte y existe un recorset que tiene el mismo nombre mas al inicio la palabra rs
If DataEnvironment1.rsCmdCorte.State Then DataEnvironment1.rsCmdCorte.Close
*Despues lo abro con la consulta de esta forma
DataEnvironment1.rsCmdCorte.Open Source:=imprimir
*Y por ultimo compruebo si el recorset tiene registros, para imprimir el reporte, si no mandar cualquier mensaje
If DataEnvironment1.rsCmdCorte.RecordCount Then
repCierreCaja.Show 1
else
msgbox "No hay información para Imprimir"
endif
bueno asi trabajo yo con mis dataenviroment's espero te sirva:comp: