Я подозреваю, что вы пропустили несколько деталей, которые нам нужны.
Когда вы открываете эту первую таблицу, вам предлагается войти в систему? (это важная информация). Если вы используете «разные» ссылки и сохраняете идентификатор пользователя / пароль в этих ссылках, вы не должны получать никаких запросов ODBC, и поэтому вы можете легко работать с несколькими регионами.
Однако, похоже, у вас есть один набор ссылок, и вы хотите перенаправить / повторно связать с другим сервером. Это может работать, но НЕ, если вы видите / разрешаете ODBC-запросы.
Если вы включите ИД пользователя / пароль в ссылки, то вы сможете повторно связать (переключиться) на любую систему. Однако, когда вы сделаете это, ОБА и комбинация uid / пароль будут и будут активны в одно и то же время.
Если все идет ОЧЕНЬ неправильно, то, что, если вы повторно связываетесь с неправильным входом в систему, тогда будет использоваться предыдущий uid / пароль! И на самом деле, если вы ТЕСТИРОВАНИЕ на вход в систему (даже плохой!), То будет использоваться первый законный вход! В конце концов, это означает, что слабым местом здесь является КОГДА / если вы запрашиваете вход в систему, он вернет «да» для легального входа в систему ДАЖЕ, если вход в систему плохой! (потому что Access восстановит прежний законный вход в систему). Вы ДОЛЖНЫ решить эту проблему.
Так что, скорее всего, вещи указывают на ваш код, который выполняет «проверку» входа перед повторной ссылкой. Я хотел бы предложить, чтобы ваш «тестовый» код входа в систему возвращал «ОК», тогда ВЫ выполняете сквозной запрос для возврата имени базы данных - если это имя базы данных / сервер неверно, то вы отклоняете этот вход в систему и НЕ выполняете повторную ссылку.
Так важно, как вы тестируете новый вход в систему / сервер? И вы, безусловно, НИКОГДА не хотите, чтобы появлялось приглашение входа в ODBC - поскольку, если пользователь отменяет или вводит неправильный вход в систему, ваш код повторной ссылки будет использовать предыдущий вход в кэш.
Вы должны иметь возможность повторно связать тот же самый заданный набор таблиц и указать их на другом сервере - но вы должны убедиться, что вход в систему, который вы использовали, действительно работал.
И последнее, но не менее важное:
Access ВСЕГДА использует соединение без DSN. ЕДИНСТВЕННОЕ исключение, если вы используете системный DSN. Поэтому, когда вы создаете файл DSN и повторно связываете его, точка DSN FROM THAT игнорируется и не используется. (это позволяет вам распространять приложение на другие рабочие столы без необходимости копировать / включать DSN). Таким образом, в действительности вы почти всегда используете соединение без DSN, а если нет, то я предлагаю вам сбросить DSN системы, так как Access не может использовать USER / пароль из таких DSN системы - даже если вы включите в него USER / пароль DSN ВСЕ ЕЩЕ игнорируется.
Кроме того, когда вы повторно ссылаетесь, используете ли вы dbAttachSavePWD - вам это не нужно, но я бы для тестирования включил его.
Если вы используете / разрешаете драйверу ODBC запрашивать у пользователя вход в систему - вы должны устранить это и убедиться, что ваш код выполняет вход.