Для простоты распространения я хочу, чтобы все связанные таблицы MySQL были без DSN. Я также хочу иметь возможность легко связать таблицы с другим сервером (в целях тестирования), поэтому я делаю настройку ссылок в коде vba. Это код, который я использую для установки / обновления любых ссылок:
Private Sub relink_mysql_tables(mysql_connection As String)
Dim db As Database
Set db = CurrentDb()
Dim tbldef As TableDef
For Each tbldef In db.TableDefs
If (tbldef.Attributes And TableDefAttributeEnum.dbAttachedODBC) Then
tbldef.Connect = mysql_connection
tbldef.RefreshLink
End If
Next
End Sub
Строка mysql_connection, которую я использую:
DRIVER={MySQL ODBC 5.1 Driver};Server=myserver;Database=mydatabase;Uid=myusername;Pwd=mypassword;Option=3
Это все прекрасно, все работает, пока я не закрою ms-access и не открою его снова Имя пользователя и пароль, кажется, забыты. Например, если я пытаюсь открыть связанную таблицу, у меня появляется всплывающее окно ODBC Connector с просьбой ввести имя пользователя и пароль.
Я заметил, что после запуска приведенного выше кода перекомпоновки, если я наведу указатель мыши на связанную таблицу (в данном случае таблицу с именем «тендер»), она покажет текущую строку подключения, но без имени пользователя и пароля:
ODBC;DRIVER={MySQL ODBC 5.1 Driver};Server=myserver;Database=mydatabase;Option=3;TABLE=tender
Я читал в другом месте, что добавление "; Persist Security Info = True" в строку подключения будет работать, но это не так! Имя пользователя и пароль все еще забываются при следующем перезапуске ms-access. Мое текущее решение состоит в том, чтобы перезапускать код перекомпоновки каждый раз, когда база данных запускается, но это кажется мне ненужными накладными расходами. Способ доступа для запоминания имени пользователя и пароля в связанных таблицах?
Кстати, я использую Mysql5.5 и Access2007.