Я работаю с базой данных Access, которая связала таблицы с базой данных DB2 через соединение DSN ODBC.
Все таблицы используют один и тот же системный DSN, поскольку они находятся в одной и той же базе данных DB2. Чтобы получить одну группу таблиц, я использую системный DSN «A» с одним идентификатором пользователя и паролем, а для другой группы таблиц я использую тот же системный DSN «A», что и в первой группе таблиц, но с другим идентификатором пользователя. и пароль.
Это разрушило хаос в Access, поскольку, если я открою таблицу из первой группы, она будет кэшировать учетные данные, а затем, если я попытаюсь открыть таблицу из второй группы, не перезапуская Access, она выдаст ошибку Invalid credentials/username
.
Используя этот ответ Я смог обойти это: я создал два разных соединения ODBC System DSN, по одному для каждой группы таблиц. Это позволяет мне открывать таблицы из любой группы без ошибок авторизации в одном сеансе (например, без перезапуска Access).
Мне было интересно, есть ли способ в Windows 10 и Office 365 (через vba, макрос AutoExec, изменение реестра, политики и т. Д.) Изменить поведение по умолчанию CurrentProject.AccessConnection.Properties("Cache Authentication")
с True
на False
Это свойство только для чтения после открытия базы данных.
Итак, у меня возникла еще одна мысль: если вы откроете удаленную базу данных с установленной False для проверки подлинности кэша и добавите ее в свою рабочую область в другой базе данных, сможете ли вы выполнять запросы через DAO в VBA в этой «удаленной» базе данных?
Например: база данных "A" имеет все связанные таблицы с DB2. Из другой базы данных "B" я открываю базу данных "A" и добавляю ее в рабочую область базы данных "B", для которой для проверки подлинности кэша задано значение false (<- возможно ли это?) Vía <code>OpenConnection? или OpenDatabase
. Как только база данных «A» будет открыта из базы данных «B», смогу ли я запускать запросы «на лету» (то есть, не сохранять процедуры) в базе данных «B», используя VBA, ссылаясь на связанные таблицы в базе данных «A»?
UPDATE
Согласно справочнику по Access 2003 VBA стр.556, невозможно указать дополнительные параметры, используя OpenConnection
![Snapshot from book](https://i.stack.imgur.com/ILCn3.png)
Этот вопрос уже задавался несколько раз: