Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не удаляется запись


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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо