Infopath row cannot be located for updating
Also, make sure you use ad Lock Batch Optimistic as the lock type, and when updating, use Update Batch, or Action queries, but NOT a mixture of the two. I think it is time (in this forum) to go into this a little deeper, maybe more than you are asking for, and getting slightly off track to the exact solution to your problem, as this deserves more of an explaination now due to the question, or similar question/problem, comming up so often, especially for JET mdb users.
With SQL Server, and you have a unique field, such as a Time Stamp, SQL Server is (now) smart enough to include the Time Stamp in the recordset EVEN if the sql string/recorset Source property does not include it.
The following table lists the data types that Office Access 2007 provides and describes how they affect data entry.
Text fields accept either text or numeric characters, including delimited lists of items.
Then, the criteria used for this update not only includes the primary key, BUT ALSO includes the field(s) being updated and there original values in order to find the record and perform an optimistic lock: UPDATE Some Table WHERE ID = 123 AND Some Field Changed = " & rs. Original Value If this db field was changed by some other action (another recordset update, action query, either by the same connection or another user) then the value of the db field does not match the value stored in the recordset for the field's Original Value, and the record cannot be located for updating.... ad Criteria Key (only if the primary key has changed (shouldn't ever change) will you get a lock.
There are different types of "Optimistic locking" (or let's rather say that htere are different ways to handle the locking - even to turning off optimistic locking) under ADO.1. First, a word about #2: For a DBMS such as JET/ACCESS, you will need to use ad Criteria All Cols as a true Time Stamp is not supported.
For information about entering new data in a database, see the article Add one or more records to a database.