Hola
Para empezar el DBGrid no tiene nada que ver en esto, este es simplemente refleja lo que hay en el query, que es el importante, aqui.
Modificando un poco esto, quedaria asi:
Código Delphi
[-]
begin
dm.t.IBQuery1.Active:=False;
dm.t.IBQuery1.SQL.Text:='SELECT CODIGO,DESCRIPCION, UNI, PVP, DTO,TOTAL,POS FROM LINTIK WHERE '+filtro;
dm.T.IBTquery.Active:=true;
Sigo sin entender, se cierra y se abre, el problema debe ser otro.
Sigo pensando que generas codigo innecesario.
Saludos