![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Транзакция в TFIBdataset [D7, XP]
d@nger © (2009-10-29 07:57:00)Здравствуйте! Я новичек в написании программ под FireBird и сейчас решил перейти с IBX на FIBPlus ... но почему то код работающий на IBX работает не так в FIBPlus. Я добавляю в таблицу запись следующим образом :
with fmain.org_dset do
try
insert;
Fieldbyname('org_id').AsInteger:=fmain.spr_org_query.FieldValues['pk'];
Fieldbyname('org_name').AsString:=fmain.spr_org_query.FieldValues['full_name'];
Post;
fmain.my_transaction.CommitRetaining;
except
messageDlg('Ошибка при добавлении записи!',mtError,[mbOk], 0);
fmain.my_transaction.RollbackRetaining;
end;
поле org_id имеет уникальный индекс... но при добавлении одинакового значения исключение срабатывает, но в DBGrid значение все равно отображается, хотя физически она не добавляется в таблицу. Никак не могу сделать чтобы при возникновении ошибки при добавлении дубля ошибочная строка не отображалась в гриде. Уже все опции FIBDataset пересмотрел... ничего не получается... подскажите что не так... может опцию какую нибудь не выставил..
d@nger (2009-10-29 08:54:00) [21]
> Это PK для таблицы ORG?
нет... это идентификатор строки другой таблицы, а индекс вставляется из генератора автоматически
Sergey13 (2009-10-29 08:33:00) [22]> [0] d@nger (29.10.09 07:57)
> поле org_id имеет уникальный индекс...
Это PK для таблицы ORG? Тогда почему туда пишется значение из какого то справочника? Почему не из генератора?