If there is a piece of invalid data in the source, Access may choke on it when trying to retreive it. For example, if a field is registered with ODBC as a date field, Access will look for valid dates. It will happily pull the data, page by page, until it hit an invalid date, and then crash the entire recordset - even if the query field is setup as something other than a date.
We were able to work around this by using Access 2.0, which uses ISAM, to screen the data for invalid values. ISAM marks the individual fields as a invalid instead of crashing the entire recordset. From there, we were able to identify the corrupt values and then fix them in the source data.
This was a few years ago - it may not even apply any more.