Tim,
Yes, the problem was with a database object. When you do an edit in a dialog from a browse, if the browse is redrawn due to another screen being drawn over it, then the database object gets updated and this messes up the edit. This problem was very hard to find because I didn't know what was triggering it.
The solution is to use TRecord (part of TData) when doing this type of an edit.
James