При записи данных в связанную таблицу в Access, что на самом деле делает запись? - PullRequest
1 голос
/ 12 февраля 2020

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

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

1 Ответ

2 голосов
/ 12 февраля 2020

Обычно все данные записываются через Access Database Engine, если вы не делаете что-то странное.

В большинстве случаев это работает так:

  • Инструмент отправляет запрос через OLEDB / ODBC / DAO к модулю доступа к базе данных (DAO360.DLL / ACEDAO.DLL)
  • компонент доступа к базе данных определяет, какие данные должны быть прочитаны / куда записаны (в файл / удаленный источник данных)
  • Access Database Engine использует свойство connect связанной таблицы, чтобы при необходимости попытаться открыть соединение, и создает новый запрос или несколько запросов в соответствующем SQL диалекте
  • Access Database Engine передает запрос / запросы через открытое соединение

Однако, это может go неверно:

  1. Инструмент фактически не использует Access Database Engine вообще, но пытается напрямую записать файл (через UCanAccess / MDBTools / проприетарный драйвер), и те вообще не поддерживают связанные соединения
  2. Строка подключения в связанной таблице запрашивает ODB C драйвер, пароль, ресурс или что-то еще, которого нет или нет в нужном месте
  3. Связанная таблица требует какой-то неявной аутентификации (например, SharePoint), и этого не происходит
  4. Для источника данных, используемого связанной таблицей, требуется определенный тип блокировки c (например, dbSeeChanges для открытия набора записей типа Dynaset на сервере SQL), который не используется инструментом

И, конечно, многие, многие другие вещи могут go ошибаться (на самом деле, я разбил Excel при попытке проверить чтение связанных списков SharePoint при написании этого ответа).

...