Hi,
This is usually happening because optimistic concurrency approach is used by the adapter. When it generates the update statement it includes all the fields from the row to the
WHERE
clause. So the update looks something like the following (if the table contains 3 columns):
UPDATE MyTable
SET Field1 = bindedNewValue1,
Field2 = bindedNewValue2,
Field3 = bindedNewValue3
WHERE Field1 = bindedOldValue1
AND Field2 = bindedOldValue2
AND Field3 = bindedOldValue3
Now if the values in the database have changed in some way the update won't find any records to modify resulting to the error you received. The modification could have been done by your program, trigger etc.
Check the values from the datatable to see the original and the new versions. You can use for example DataTable's GetChanges method to get the previous situation. You can also hook up to the adapter's RowUpdating event to see more easily the information before the update is made.