Доступ к VBA во избежание конфликта с первичным ключом при добавлении записи в связанную таблицу - PullRequest
1 голос
/ 20 марта 2012

Таким образом, корень этой проблемы может лежать в плохом дизайне базы данных, некоторые способы его настройки унаследованы от более старых версий.Я просто не мог найти лучший способ сделать это.

У меня есть четыре таблицы, связанные одним полем: [OBJECTID].Каждая таблица связана с формой доступа, которая контролирует данные.Важно, чтобы эти таблицы были отдельными, поскольку данные имеют географическую привязку и должны отображаться отдельно, однако по умолчанию они наследуют несколько полей друг от друга.

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

СейчасВ поле [OBJECTID] в первой таблице задан автоматический номер типа данных, поэтому все последующие связанные записи в других таблицах могут наследовать это число.Для случаев, когда запись в Tbl1 не вводится через форму Form1, достаточно просто назначить номер, который не конфликтует с каким-либо текущим номером, но как избежать присвоения номера, который может конфликтовать с каким-либо будущим сгенерированным [OBJECTID]по полю автонумерации в Tbl1?

Извините, если это сбивает с толку!Заранее спасибо, что помогли мне обдумать это ...

1 Ответ

0 голосов
/ 20 марта 2012

Если конструкция правильная, между таблицей 1 и таблицей 2/3/4 должна существовать связь с ссылочной целостностью.Поскольку вы упоминаете, что occasionally, there is only data for the second, third and fourth form, это означает, что у нас нет ссылочной целостности: - /.

Я бы идентифицировал поля, общие для всех 4 таблиц, и создал бы "основную" таблицу с этими значениями, что означает, что основная таблица ДОЛЖНА быть заполнена.Затем вы создаете отношение от 1 до 0,1 к другим 4 таблицам с внешним объединением, в котором их PK затем длинное целое число.

Для источника ваших форм с 1 по 4 используйте внешнее соединение между MainTable и T1 / 2/3/4.Затем «подтаблицы» наследуют PK основной таблицы.

Надеюсь, я не слишком неясен.

...