Текущий архив: 2004.04.25;
Скачать: CL | DM;
Вниз
Почему не доходит exception Найти похожие ветки
← →
YurikGl © (2004-03-25 19:29) [0]Вопрос, видимо, простой.
Имеется триггер в базе Interbase
CREATE TRIGGER ZAMENASPOSOBTRIGGER1 FOR ZAMENASPOSOB BEFORE DELETE POSITION 0 AS
DECLARE VARIABLE TMP INTEGER;
BEGIN
FOR SELECT NULL FROM DopustZamena
WHERE IdZamenaSposob = old.IdZamenaSposob into :TMP
DO
EXCEPTION NEW_EXCEPTION;
END
Он запрещает удаление записи в материнской таблице ZAMENASPOSOB если есть соответсвующие записи в дочерней DopustZamena.
Таблицы, кроме триггера ничем не связаны.
Если удалять через IbExpert или SQLExlplorer, то он срабатывает и при наличии записи в дочерней таблице DopustZamena блокирует удаление и выдает сообщение об ошибке.
Но если удалять через мое приложение SimpleDataSet2.Delete, то Grid делает вид, что запись удалена, сообщений не выдает, а на сервере не удаляет.
Работаю через DBExpress SQLConnection+SimpleDataSet+DataSource+EhGrid
Где что выставить надо?
← →
YurikGl © (2004-03-25 20:33) [1]Неужели никто не знает?
← →
Sergey Masloff (2004-03-25 22:23) [2]Насколько помню DBExpress же дает только однонаправленые курсоры. И чтобы работать с гридом они должны где-то кешироваться. Соответственно должен быть метод применить изменения к базе. Пока ты его не вызовешь в базе ничего не меняется и никаких исключений ты не получишь. Это вкратце. Подробнее не скажу потому что с этим Г (DBExpress) не работаю и не собираюсь. Но то что я даю тебе верное направление - 99.99%
← →
Sergey Masloff (2004-03-25 22:24) [3]Ага, он потомк TCustomClientDataSet. Эплай апдейтс Пушкин вызывать будет?
← →
YurikGl © (2004-03-25 22:44) [4]В принципе, проблему я решил отказавшись от методов типа DataSet.delete. Пользую SQL-комманды и все Ok.
Все равно спасибо.
Страницы: 1 вся ветка
Текущий архив: 2004.04.25;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.03 c