![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не удаляется запись
Kirill © (2004-05-02 01:59:00)Совсем запутался...
В TpFIBDataSet в DeleteSQL прописал
DELETE FROM tblbooks B WHERE B.IDB = :OLD_IDB, где IDB - PK.
Добавил 2 транзакции trRead и trWrite
read
nowait
rec_version
read_committed
write
nowait
rec_version
read_committed
AutoCommit выставил в True.
На нажатие кнопки делаюtblBooks.Delete
Из таблицы запись пропадает, но после отсоединения от БД и восстановления соединения запись как будто не трогали. Она на своем старом месте.
БД Firebird 1.5
Kirill (2004-05-03 00:28:00) [1]Спасибо большое. Сам разобрался. Вся трабла заключалась в том, что я юзаю для просмотра в select'е представление, а удалять пытаюсь из таблицы. У них одинаковые значения PK, но разные названия. Изменил на это
DELETE FROM tblbooks B WHERE B.IDB = :OLD_ID
и все заработало. Аналогично и в изменении.
У меня возник другой вопрос, но это уже в новом топике...
Kirill (2004-05-02 02:46:00) [2]
> Может следует сделать принудительный commit транзакциям?
Делал, тоже не помогает. Самое интересное, что вставка работает. Также работает справочник авторов, а вот таблица, использующая внешний индекс не хочет нормально изменять и удалять.
P.N.P. (2004-05-02 02:28:00) [3]Может следует сделать принудительный commit транзакциям?
Kirill (2004-05-02 02:14:00) [4]К этому хочу еще добавить, что изменения тоже не хотят сохранятся, но в данном случае изменения вообще не появляются.
UPDATE BOOKS B
SET
B.BNAME = :BNAME,
B.AUTHOR = :MAS_IDA,
B.POSIT = :POSIT
WHERE B.IDB = :OLD_IDB
, где IDA PK таблицы AUTHOR
tblBooks.Edit;
tblBooks.FieldByName('BNAME').AsString:=fbookname;
tblBooks.FieldByName('POSIT').AsInteger:=fposit; //целое
tblBooks.Post;