Does your query work properly if you invoke it directly in Access? And must
the user supply the values of the parameters directly, or can those values
be picked up from a worksheet?
I assume you're using Microsoft Query to return the data from Access.
Microsoft Query is not as powerful as Access (and thus any other true
relational database) and sometimes it doesn't respond to SQL as you'd
expect. If you're using Microsoft Query to help define your query, for
example using selection criteria, you might try putting the criteria in the
Access query rather than in Microsoft Query. The less you leave to Microsoft
Query, the better. In particular, if you are using any sort of complex table
joins, you should make sure to manage them in the Access query, not in
Microsoft Query.
The last time I ran into what you describe, it was caused by a combination
of restricting records based on a selection criterion, and then further
restricting them on the basis of inner joins. The only way I was able to
solve it was to use VBA to execute two separate queries, each returning a
progressively smaller recordset. This stuff can get very complex.