Изменить первичный ключ доступа со связями - PullRequest
1 голос
/ 30 марта 2010

У меня есть база данных в расширении accdb для Access 2007, более или менее 30-40 таблиц со связанным первичным ключом "local_number". это текстовый первичный ключ с 10 длиной.

Как изменить длину этого первичного ключа на 30 БЕЗ удаления ранее всех 30 отношений.

  1. Аналогичный вопрос. Мне нужно добавить составной первичный ключ к моему ПК "local_number". Мне нужно добавить «Дата» в составе ПК. Тогда доступ разрешите, если я сначала удалю все отношения.

Как можно избежать этого предупреждения и изменить мой PK, игнорируя это сообщение.

Причиной создания PK в каждой таблице является требование изменения исторических данных в записях.

update, Кто-то знает, возможно ли это, или я намерен удалить все отношения?

Ответы [ 2 ]

1 голос
/ 02 апреля 2010
  1. Сделать копию базы данных с существующими отношениями.

  2. Удалить все связи в оригинальной копии.

  3. Затем используйте код , чтобы скопировать отношения из резервной копии в исходную копию.

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

1 голос
/ 31 марта 2010

Вы можете использовать объектную модель доступа к базе данных и код VBA, который автоматически

  1. добавить новые поля в соответствующие таблицы (как PK, так и FK)
  2. На основе уже существующих отношений обновите все значения FK соответствующими значениями PK,
  3. Разорвать существующие отношения
  4. Создать новые отношения

Чтобы узнать, какие отношения необходимо заменить, вы можете просмотреть объекты базы данных.

Этот код может вас вдохновить (написанный на лету / может содержать ошибки / проверить соответствующую справку):

for i = 0 to mydatabase.Relations.count - 1
    Debug.Print mydatabase.relations(i).name
    for j = 0 to myDatabase.relations(i).fields.count -1
        debug.print myDatabase.relations(i).fields(j).name
    next j
next i
...