When inserting records into a Microsoft Access database, immediately attempting to reselect them occasionally does not return all inserted records. This occurs even when the records are inserted and reselected on the same connection.
The problem described in this article affects the Microsoft Jet engine's ability to locate data stored in the connection's cache. The Jet engine examines changes stored in the connection's cache when processing a query. As a result of this problem, running a query on that same connection may not retrieve all of the newly inserted data that satisfy the query's search criteria immediately after adding new rows to your database. After applying this hotfix, that query correctly retrieves all rows in the connection's cache that satisfy the query's search criteria.
To increase performance, the Jet engine stores modifications in its cache prior to writing the changes to the file. As a result, modifications currently stored in the connection's cache are visible only on that connection. Other connections are unable to see these changes until the Jet engine flushes them to the database.
This behavior is normal and is not related to the problem described in this article.
Internal to Jet, the seek methods used to locate the inserted records are occasionally accessing uninitialized memory and picking up incorrect values. Based on these incorrect values, the attempt to locate the appropriate record fails.
To resolve this problem, install the latest Microsoft Jet 4.0 service pack. To download the latest Microsoft Jet 4.0 Service Pack, see the following article in the Microsoft Knowledge Base:
How To: Obtain the Latest Service Pack for the Microsoft Jet 4.0 Database Engine
Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was corrected in Microsoft Jet 4.0 Service Pack 5 (SP5).