Использование Ms Access ...
Я пытаюсь изменить пользователя, к которому я подключен к базе данных SQL Server, из Access. Форма запуска из моего приложения доступа динамически подключается к таблицам с помощью измененной версии процедуры, размещенной в КБ Microsoft. В Essence он удаляет tabledef, который соответствует имени localName, с которым вы его вызываете, вызывает Currentdb.CreateTableDef, чтобы создать новый файл с соответствующей новой строкой подключения, и добавляет его в коллекцию CurrentDb.TableDefs. Насколько я вижу, это функция добавления, которая фактически связывается с базой данных и выдает ошибку, если строка подключения неверна.
В моем случае я сделал оригинальный проход через все таблицы в моей базе данных, вызвав эту процедуру со старой (стандартизированной - то есть я обычно использую это) строкой, и все таблицы подключились нормально.
Сейчас я пытаюсь второй проход через эту форму запуска с новой комбинацией пользователя и пароля, чтобы проверить различные разрешения в базе данных.
Затем я создал новую строку подключения с измененными именем и паролем и в настоящее время выполняю пошаговую процедуру, которую я только что описал.
У меня есть переменная td, которая содержит только что созданную таблицу, и я как раз перед ее добавлением в коллекцию Currentdb.TableDefs
В окне «Немедленное» отладчика ?td.connect
правильно отображает строку подключения с вновь сформированной строкой подключения, а ?td.name
дает tblConfig
в качестве имени таблицы.
Просто чтобы убедиться, что TableDef был правильно удален из текущей коллекции, я сделал ?CurrentDb.Tabledefs("tblConfig").Connect
из непосредственного окна и был вознагражден диалоговым окном, в котором говорилось, что в коллекции нет члена с таким именем
Затем я перешагнул через одну линию
CurrentDb.TableDefs.Append td
А теперь снова вызовите ?CurrentDb.Tabledefs("tblConfig").Connect
из окна Immediate отладчиков, и ответом будет старая строка подключения, а не новая.
В этой процедуре активен OnError, но он не активируется во время одного шага.
Единственное объяснение, которое я могу придумать для этого, заключается в том, что старая строка подключения каким-то образом сохраняется на диске в результате сохранения базы данных в какой-то момент, и append не копирует строку подключения, когда она наконец добавляется.
У кого-нибудь есть лучшее объяснение?