Код VBA для удаления и создания отношений, добавляющий одинаковые записи идентификаторов в дочернюю таблицу, возможно ли это? - PullRequest
2 голосов
/ 19 марта 2012

У меня есть таблица, которую я создаю каждый раз с обновленными данными из основной базы данных. таким образом, существует ГЛАВНАЯ база данных со всеми данными, из которых я запрашиваю и получаю набор данных, который я сохраняю как таблицу, назовем ее (TABLE1), в небольшой базе данных доступа. База данных MAIN обновляется мной и некоторыми другими коллегами вручную, а затем я удаляю старую таблицу в своей базе данных доступа и создаю новую (TABLE1) с обновленными данными. Обновленные данные представляют новые записи и некоторые обновленные поля существующих записей.

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

Пример:

TABLE1
-------
name
-------
'cat'
'dog'
'mouse'

TABLE2
------
cost
------
23
13
25

Поля идентификатора oon на основе запроса (автономный номер)

-------|-----
name   |cost
-------|------
'cat'  |23
'dog'  |13
'mouse'|25

1 Ответ

1 голос
/ 19 марта 2012

Вам не нужно удалять TABLE1, чтобы потом можно было воссоздать его со свежим набором данных.Вместо этого, отбросьте существующие строки ...

DELETE FROM TABLE1;

... затем добавьте новые строки к нему ...

INSERT INTO TABLE1 (
    fld1,
    fld2,
    etc
    )
SELECT
    fld1,
    fld2,
    etc
FROM MAIN
WHERE <the condition which identifies the new records>;

Однако я не уверен, как это относится ксуществующие отношения.Если вы не применяете реляционную целостность, этого может быть достаточно.

Если вам все еще нужно удалить связь, вы можете удалить ее из коллекции отношений вашей базы данных.

Dim db As DAO.Database
Set db = CurrentDb
db.Relations.Delete "YourRelationName"
Set db = Nothing

Позже,для воссоздания отношений вы можете использовать Database.CreateRelation Method .Это, вероятно, будет более сложным, чем удаление отношений.См. Подробный пример: VBA-код для создания отношений доступа MS

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