Recently some Delphi / InterBase applications display
"Record not found or changed by another user"
They use the default TSQLQuery/TClientDataSet (or TSimpleDataSet) components of dbExpress.
We found that in the database table, a field was stored with milliseconds by a non-dbExpress application.
It looks like dbExpress did not read the milliseconds from DB, and use that truncated value in the 'where' condition of the update table SQL statement, so there was no matching record to be updated.
Update: we are using TSQLTimeStamp fields in the Delphi application. No OnBeforePost handlers are modifying the field value.
Update 2
As can be seen in IBExternals.pas PCTimeStructure does not have a milliseconds part. So 'by design' no support of milliseconds for InterBase in Delphi (2009).
Does anybody know if ms support has been added in a later version of Delphi?