здесь могут нарисоваться ещё две проблемки:
1. в БД повреждено поле первичного ключа, особенно если он автоинкрементный
2. Bde имеет свойство кешировать записи, поэтому, чтобы на 90% быть уверенным что запись добавилась, в своё время использывал код
Код:
procedure TdmApp.ABdeFlushBuffers;
var
i: Integer;
begin
if not Session.Active or not Database.Connected then
exit;
with Database do
for i := 0 to DataSetCount - 1 do
begin
if DataSets[i].Active and (DataSets[i] is TTable) then
if not (DataSets[i] as TTable).ReadOnly then
try
DbiSaveChanges(DataSets[i].Handle);
except
end;
end;
end;
а также метод Table.FlushBuffers после каждого изменения в БД