Otto,
For me filters where always dangerous because you never new if you have set somewhere a filter and then you reused the workspace and got wrong results
.
I'm not sure if you meant reusing a database object or reusing a workspace. With database objects you don't ever have to deal with workspaces. You can always open another copy of the same database object--then you don't have those problems.
If you prefer to use the same object, then you should always save and restore it's state (recno(), index, filter, etc.) in the particular routine (function or method) then you won't have those problems either. Save it at the start of the routine and restore it at the end.
However, I don't use filters either--they are just too slow and require extra programming (like the above).
James