|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.01.2012, 10:48 | #1 |
Пользователь
Регистрация: 04.12.2010
Сообщений: 23
|
DBE Проверка на наличие связанных данных при удалении записи
Добрый день!
Создала с помощью DBE (Paradox 7) несколько таблиц, среди них есть связанные. Сначала вопрос: как можно программно из главной таблицы перейти в подчинённую? Иначе говоря: допустим, у меня есть 20 таблиц, и всего одна из них подчинена главной. Использую компоненты DataSourse, TTable, DBGrid. Есть ли какое-то свойство у этих компонентов, чтобы обратиться напрямую к подчинённой таблице и с ней поработать? Гуглила, но безрезультатно. А нужно это вот для чего. Для связанных таблиц в настройках можно выбрать один из двух вариантов: 1) Prohibit - запрещено изменять значение ключевого поля головной таблицы или удалять из неё записи: 2) Cascade - при изменении значения ключевого поля головной таблицы изменится значение этого поля в подчинённой, а при удалении записи из головной таблицы будут удалены все записи в подчинённой таблице, в которой используется это значение. Собственно говоря, хотелось бы получить что-то среднее - запретить удаление при наличии записей в подчинённой таблице (если же в подчинённой таблице записей с таким значением нет, то удалять можно). А при изменении ключевого поля в головной таблице менять его в подчинённой. В идеале, хотелось бы оставить опцию Cascade, но при попытке удалить запись проверять программно, используется ли её ключ в подчинённой таблице. Буду очень благодарна за ответы! |
08.01.2012, 11:35 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
позволю себе маленькое уточнение:
думаю, что у Вас речь идёт о BDE (Borland DataBase Engine) |
08.01.2012, 11:45 | #3 |
Пользователь
Регистрация: 04.12.2010
Сообщений: 23
|
|
09.01.2012, 00:25 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
имхо, Вам нужно сделать следующее.
1) поставить в свойствах связи "CASCADE" (это чтобы удаление можно было выполнить. 2) программно обеспечить так, чтобы ключи в головной таблице НЕ МЕНЯЛИСЬ. При попытке удалить запись из головной таблицы программно на клиенте проверять, если ли записи в подчинённой таблице. Если есть - выдавать ошибку и не удалять запись в головной таблице. Если же записей в подчинённой нет - выполнять удаление. проверять можно через запрос: Код:
p.s. кстати, прежде чем всё это мутить, а проверьте: имхо при задании свойства связи "Prohibit" из головной таблицы можно будет удалять записи, но только в том случае, если нет ссылок в подчинённой таблице. Т.е. именно то, что Вам и нужно! |
25.02.2012, 19:13 | #5 |
Пользователь
Регистрация: 04.12.2010
Сообщений: 23
|
Собственно, я так и написала в результате - проверку при удалении. Правда, как использовать select в Парадоксе, так и не разобралась. Вручную таблицы просматривала.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
master has detail records cannot delete or modify при удалении записи | hunter03 | БД в Delphi | 5 | 30.03.2011 22:23 |
Как при вводе данных на одной форме - добавить запись на двух связанных таблицах? | маврик | Microsoft Office Access | 13 | 05.11.2009 10:40 |
проверка вводимых значений не производится при удалении | Air_kplp | Microsoft Office Excel | 7 | 29.05.2009 09:01 |
Проблема со значением поля-счетчика при удалении записи | RammFan | БД в Delphi | 11 | 02.04.2009 22:54 |
Как вывести сообщение типа "внимание" при удалении записи из БД | Alex_Sokolov | Помощь студентам | 7 | 06.01.2009 13:50 |