Couple of suggestions. One, right after you build your Sql statement display it using a messagebox "msgbox(strSql) - where strSql is your sql statement name. Does it display a statement with expected values? Two, are the values that should be 'between' really between? Maybe the values are different than you expect - what if you make a query where the only criteria is the 'between' - does it return the records you want? What if you make a query where the only criteria is that the field value equals what you know is one on the between values you are trying to retrieve - does it return that record? I think this is merely a process of elimination.