Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Удаление записи из таблиц Paradox 7

243
24 мая 2006 года
pacific_7
1.9K / / 06.09.2004
Суть: есть 2 таблицы Paradox 7 - главная и зависимая. Связаны по полю Login. Связаны как средставми билдера (через MasterSource/MasterField), так и средствами самого Paradox'а, при помощи DataBase Desktop'а - на уровне ссылочной целостности.
В главной таблице значение поля Login уникально, в зависимой - не уникально, т.е. может встретитья несколько записей с одинаковым значением поля Login.
Требуется: правильно удалить записи из обоих таблиц. При вызове метода MasterTable->Delete() выскакивает ошибка "Master has detail record. Cannot delete or modify".
Какие есть варианты? Не хочется выдирать из дочерней таблицы все записи руками, думаю, что есть более быстрые и правильные методы.
929
24 мая 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by pacific_7
Суть: есть 2 таблицы Paradox 7 - главная и зависимая. Связаны по полю Login. Связаны как средставми билдера (через MasterSource/MasterField), так и средствами самого Paradox'а, при помощи DataBase Desktop'а - на уровне ссылочной целостности.
В главной таблице значение поля Login уникально, в зависимой - не уникально, т.е. может встретитья несколько записей с одинаковым значением поля Login.
Требуется: правильно удалить записи из обоих таблиц. При вызове метода MasterTable->Delete() выскакивает ошибка "Master has detail record. Cannot delete or modify".
Какие есть варианты? Не хочется выдирать из дочерней таблицы все записи руками, думаю, что есть более быстрые и правильные методы.


Когда ссылочную целостность объявлял, выбрал Cascade или Prohibit?

243
24 мая 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by sp999
Когда ссылочную целостность объявлял, выбрал Cascade или Prohibit?


Cascade конечно. Потому и не понимаю в чем замес.

242
24 мая 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by pacific_7
Cascade конечно. Потому и не понимаю в чем замес.


а ты в какой последовательности пытаешься удалить данные?
сначала все из дочерней таблицы, потом из главной?

929
24 мая 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by OlgaKr
а ты в какой последовательности пытаешься удалить данные?
сначала все из дочерней таблицы, потом из главной?


Суть каскадного удаления заключается в том, чтобы удалить запись из мастер-таблицы, а при этом каскадно удалятся все связанные записи в детайл-таблице.

243
24 мая 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by sp999
Суть каскадного удаления заключается в том, чтобы удалить запись из мастер-таблицы, а при этом каскадно удалятся все связанные записи в детайл-таблице.


Угумс, именно так и делаю. О чем говорит MasterTable->Delete();

1
25 мая 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by pacific_7
Угумс, именно так и делаю. О чем говорит MasterTable->Delete();


Я так понимаю - юзаем TTable? Скорей всего записи просто залочены - т.е. в момент удаления детайл-таблица тоже открыта и именно на записях которые удаляются. Потому и не удаляется. Что бы проверить - пробуй тоже самое выполнить через TQuery - естественно убрав TTable - скорее всего проблема исчезнет.

1
25 мая 2006 года
kot_
7.3K / / 20.01.2000
Ну или закрыть связанную таблицу. Как вариант. :)
243
25 мая 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by kot_
Ну или закрыть связанную таблицу. Как вариант. :)


Не катит. То же самое выскакивает. Вот блин, не хочется новое что-то изучать про работу с БД - некогда. Занят этим постольку, поскольу. Но видимо придется. Если есть еще варианты, то буду очень благодарен.

10
25 мая 2006 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by pacific_7
Не катит. То же самое выскакивает. Вот блин, не хочется новое что-то изучать про работу с БД - некогда.


Это не работа с БД, а геморрой с БД. Яка держава, таки і теракти (c).

1
25 мая 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by pacific_7
Не катит. То же самое выскакивает. Вот блин, не хочется новое что-то изучать про работу с БД - некогда. Занят этим постольку, поскольу. Но видимо придется. Если есть еще варианты, то буду очень благодарен.


Вариант - неиспользование TTable. Работа с нормальным сервером.

243
25 мая 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by kot_
Вариант - неиспользование TTable. Работа с нормальным сервером.

Да ну его в пень. Сделаю наверное через жопу - через GoToKey()/Delete(). Хоть и криво, но быстрее. :)

929
26 мая 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by pacific_7
Да ну его в пень. Сделаю наверное через жопу - через GoToKey()/Delete(). Хоть и криво, но быстрее. :)


Посмотрел в Инете - многие натыкаются на эти грабли.
Одно из решений - вешать на TTable.OnBeforeDeletе выполнение запроса на удаление из детайл-таблицы.

243
26 мая 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by sp999
Посмотрел в Инете - многие натыкаются на эти грабли.


Я тоже смотрел :). И так же - не нашел ничего лучше того, что я и сам могу сделать, если не применять какие-то другие компоненты.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог