На какую таблицу влияет удаление, когда форма основана на запросе? - PullRequest
2 голосов
/ 22 апреля 2010

В MS Access 2003 У меня есть форма, источник записи которой равен запросу, включающему INNER JOIN. Соединение между таблицей местоположения и таблицей контейнера. Контейнеры - это объекты, которые хранятся в определенных местоположениях, каждое местоположение и контейнер определяются значениями идентификатора.

SELECT DISTINCTROW Container.Container_ID, Location.Location_ID
FROM Location INNER JOIN Container 
ON Location.[Location_ID] = Container.[Location_ID]

То, что я пытаюсь выяснить, это ... Когда я удаляю запись (используя элементы управления навигацией формы) в форме, основанной на вышеупомянутом запросе, какие таблицы затрагиваются? Удаляются ли записи в таблицах «Контейнер» и «Местоположение» или это просто таблица местоположений?

Ответы [ 2 ]

1 голос
/ 23 апреля 2010

Без определения отношения вы удалите текущую строку из Контейнера и оставите Местоположение без изменений.

Тем не менее, я думаю, что вы должны добавить отношения и обеспечить ссылочную целостность, чтобы гарантировать, что вы не можете удалить местоположение, в котором все еще хранится контейнер. В противном случае вы можете получить запись Контейнера, которая ссылается на Location_ID, который больше не существует. Отношения могут не помочь с этой формой и запросом, но они могут защитить от ошибок в других ситуациях.

Существуют и другие способы разработки формы, которые облегчат понимание того, какая запись будет удалена из какого места. Вы можете основывать основную форму на Location и включать подчиненную форму на основе Container. В свойствах установите Location_ID в качестве основного / дочернего поля ссылки. Затем для Location_ID, отображаемого в главной форме, все контейнеры, хранящиеся в этом местоположении, будут отображаться в подчиненной форме. Используйте подчиненную форму, чтобы удалить любой контейнер, который вы хотите.

0 голосов
/ 22 апреля 2010

Это зависит от того, установлена ​​ли у вас связь между таблицами, и для этой связи включена настройка «Каскадное удаление связанных таблиц».

Если у вас есть отношение, и каскадные удаления включены, он обязательно удалит записи в связанной таблице.

Если между двумя таблицами применяется ссылочная целостность, Access будет жаловаться, если вы попытаетесь удалить родительскую запись без предварительного удаления всех связанных дочерних записей.

Мне неясно, что происходит в форме, если обе таблицы присутствуют в запросе к форме и запрашивается удаление, а каскадное удаление отключено. Но это было бы достаточно легко проверить.

http://office.microsoft.com/en-us/access/ha011739511033.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...