неименованный экземпляр драйвера ODBC (MySql ODBC)

Сергей Лалов
Дата: 10.02.2016 00:27:45
Привет всем, столкнулся с небольшим неудобством при присоединении access к серверу MySQL через MySQL ODBC Driver 5.3
Создаю именованный экземпляр драйвера в списке администрирования ODBC, настраиваю его, линкую таблицы , все работает. Но ссылаться при линковке таблицы нужно обязательно на именованный экземпляр созданный на компьютере. Только если настроен DSN.

Ладно, хрен с ним, пошел дальше, решил отучить аксесс от создания именованного DSN. Снес таблицу ,зашел в конструктор запроса,
сделал тип запроса к серверу, текст запроса сделал
SELECT * FROM tbl_goods


Строку подключения сделал в свойствах запроса несвязанную с конкретным именным подключением:
ODBC;Driver=MySQL ODBC 5.3 ANSI Driver; Server=.XX.XX.XXX.XXX;Database=XX_XXXX;User=XXXX;Password=XXXX;Option=3;


Все здорово и замечательно, запрос чудесно сделал выборку с сервера.

Теперь хочу спросить, а можно ли как нибудь отучить линкованную таблицу от именованного экземпляра подключения. Именно таблицу , не привязываться через DSN , который надо отдельно создавать, а по аналогии с запросом напрямую использовать драйвер myOdbc?? Если да, то где там в свойствах можно прописать мой connection string?
Сергей Лалов
Дата: 10.02.2016 00:51:33
...пошел дальше..и решил задачку...

Через VBA создал линкованную таблицу, но процедуру создания пришлось писать кодом и вешать на кнопку..:

Private Sub Кнопка_Click()
DoCmd.TransferDatabase acLink, "ODBC", "ODBC;DRIVER=MySQL ODBC 5.3 ANSI Driver;" _
& " SERVER=XX.XX.XXX.XXX; User=XXXX;Password=XXXX;DATABASE=XX_XXXX", acTable, "как_называется_таблица_на_сервере", "как_она_будет_называться_у_меня"
End Sub


Все отлично работает, вопрос на 90% отпал, но может быть кто нибудь подскажет, где в настройках линкуемой таблицы ручками можно прописать источник данных ,минуя VBA?
Сергей Лалов
Дата: 14.02.2016 21:47:16
Ребят, а как можно проверить программно состояние соединения Connection, через код VBA? После первого подключения и ввода MySQL евского логина и пароля все остальные таблицы по умолчанию хранят настройки подключения и все отлично работает.

А как проверить наличие данного соединения? Чтобы было True или False к примеру?
а так?
Дата: 14.02.2016 22:28:31
Public Function testcon() As Boolean
    Dim s$
    On Error GoTo 1
    s = "Driver={MySQL ODBC 5.1 Driver};" & _
         "Server=ХХ.ХХХ.ХХХ.Х;Port=3306;" & _
         "Database=ХХХХХХХ;" & _
         "User=ХХХХХ;" & _
         "Password=ХХХХХХХ;Option=3;"
    With New ADODB.Connection
        .ConnectionString = s
        .Open
    End With
    testcon = True
    Exit Function
1:  Debug.Print Err.Description
    Err.Clear
End Function
Сергей Лалов
Дата: 15.02.2016 13:28:15
а так?
Public Function testcon()
 .....

         "User=ХХХХХ
         "Password=ХХХХХХХ
........


Этот пример понятен. Я его тестировал. Но есть один любопытный момент. После того как я один раз задействовал ввод логина и пароля MySQL ODBC driver при входе в проект аксесс, он на все время открытого проекта MS Access сохраняет настройки текущего соединения . Один раз ввожу логин и пароль в формочку как указано на картинке, и после этого для всех присоединенных таблиц ничего подобного вводить не надо. Где-то хранятся настройки текущего соединения.
+
Картинка с другого сайта.


И мне именно нужно проверить текущее соединение проекта, без ввода логина и пароля. Просто наличие текущего соединения с MySQL ODBC driver ом

Можете подсказать, как это сделать?
Шыфл
Дата: 15.02.2016 14:54:40
Сергей Лалов,
посмотри
application.CurrentProject.Connection.State 
application.CurrentProject.Connection.ConnectionString
application.CurrentProject.AccessConnection.State
application.CurrentProject.AccessConnection.ConnectionString

Может там хранится?
Шыфл
Дата: 15.02.2016 15:02:10
Ну а вообще-то это тут
currentdb().TableDefs("Моя_прилинкованная_таблица").Connect
Сергей Лалов
Дата: 15.02.2016 15:08:01
Шыфл
Ну а вообще-то это тут
currentdb().TableDefs("Моя_прилинкованная_таблица").Connect


Ну это как частность более. Соединение это объект/свойство, который можно проверить без привязки к конкретной таблице.
Попробую четыре варианта предложенные чуть выше. State пробовал вчера, дебаггер ругаиццо, попробую остальное сегодня.
Шыфл
Дата: 15.02.2016 15:30:10
Сергей Лалов
Соединение это объект/свойство, который можно проверить без привязки к конкретной таблице.


То, что каждая таблица может быть прилинкована к другому серверу вас, как бэ, не смущает, я так понимаю...
Сергей Лалов
Дата: 15.02.2016 15:43:00
[quot Шыфл]
Сергей Лалов
То, что каждая таблица может быть прилинкована к другому серверу вас, как бэ, не смущает, я так понимаю...


Как бы нет, у меня одно активное соединение, по архитектуре проекта