| Подключение таблиц MySQL без DSN (ADOX или DAO) По материалам https://support.microsoft.com/en-us/kb/230588  Требует установки MySQL ODBC драйвера 
 Установка драйвера ODBC MySQL:
 01. На страницу: http://dev.mysql.com/downloads/connector/odbc
 (Проще скачивать с: http://mirror.cogentco.com/pub/mysql/Connector-ODBC/ )
 02. Находите желаеемую версию и скачиваете инсталлятор (Например:mysql-connector-odbc-5.3.4-win32.msi).
 03. Запускаете инсталлятор, все настройки по умолчанию.
 04. После установки можно сразу работать.
 
 Модуль:
 '-------------------------------------------------------------------- ' Module    : modLinkTablesMySQL ' Author    : es ' Date      : 21.08.2016 ' Purpose   : Подлинковка таблиц MySQL с автоматическим созданием DSN (ADOX или DAO) '-------------------------------------------------------------------------- 'Требуются ссылки на: '    Microsoft ADO Ext. for DDL and Security. (Version 2.1 or higher) '    Microsoft ActiveX Data Objects Library. (Version 2.1 or higher) '-------------------------------------------------------------------- 
 Public Sub LinkTablesMySQL_ADOX() 'Создание общей строки подключения и подлинковка таблиц MySQL '-------------------------------------------------------------------------- Dim sDriver As String Dim sServerAdr As String Dim sServPort As String Dim sDbName As String Dim sUser As String Dim sPassWord As String Dim sConnect As String Dim l& '-------------------------------------------------------------------------- On Error GoTo LinkTablesMySQL_ADOX_Err 'Внимание - проверь версию драйвера! - Может уже... 5.5 или даже 6.2!?     'sDriver = "{MySQL ODBC 5.2 ANSI Driver}"    'ANSI Driver     sDriver = "{MySQL ODBC 5.3 Unicode Driver}"  'UNICODE Driver          'sServerAdr = "localhost"     sServerAdr = "127.0.0.1"   ' Адрес (Имя) сервера     sServPort = "3306"         ' Порт соединения = 3306 (Обычно так и есть)     sDbName = "codelibrary_db" ' Название базы     sUser = "root"             ' Имя пользователя     sPassWord = "Pass_Word"    ' Пароль 
 
 'Создаю строку подключения:     sConnect = "ODBC;DRIVER=" & sDriver & _         ";SERVER=" & sServerAdr & _         ";Port=" & sServPort & _         ";DATABASE=" & sDbName & _         ";USER=" & sUser & _         ";PASSWORD=" & sPassWord & _         ";OPTION=3" '& _         ";stmt=set names cp1251"         '";stmt=set names utf8"    'Debug.Print sConnect 
 '-------------------------------------------------------------------- 'Подключаем несколько таблиц по ADOX     l = LinkTable_ADOX("table_name_01", sConnect)     If l > 0 Then Err.Raise l          l = LinkTable_ADOX("table_name_01", sConnect)     If l > 0 Then Err.Raise l              l = LinkTable_ADOX("table_name_03", sConnect)     If l > 0 Then Err.Raise l     '-------------------------------------------------------------------------- 'Подключаем пару таблиц по DAO     l = LinkTable_DAO("table_name_04", sConnect, "table_name_04_DAO")     If l > 0 Then Err.Raise l          l = LinkTable_DAO("table_name_05", sConnect, "table_name_05_DAO")     If l > 0 Then Err.Raise l 
          LinkTablesMySQL_ADOX_Bye:     Exit Sub 
 LinkTablesMySQL_ADOX_Err:     MsgBox "Ошибка " & Err.Number & vbCrLf & Err.Description & vbCrLf & "в процедуре: LinkTablesMySQL_ADOX", vbCritical, "Error in module modConnectMySQL_DAO"     Resume LinkTablesMySQL_ADOX_Bye End Sub 
 
 Private Function LinkTable_ADOX(stRemTName As String, strConnect As String, Optional sLocalTName As String = "") As Long 'es 21.08.2016 'Подлинковка таблички MySQL Server с автоматическим созданием DSN (ADOX) 'При удачном подключениии возвращает = 0 (ноль), при неудачном = КОД ОШИБКИ (номер) '------------------------------------------------------------------------- 'Аргументы: '   stRemTName  = Имя таблицы на сервере '   strConnect  = Строка подключения к серверу '   sLocalTName = Локальное Имя Таблицы '------------------------------------------------------------------------- Dim cat As New ADOX.Catalog Dim tbl As New ADOX.Table      On Err GoTo LinkTable_ADOX_Err 
 'Если локальное имя не указанно     If sLocalTName = "" Then sLocalTName = stRemTName      'Открываем каталог текущей базы     Set cat.ActiveConnection = CurrentProject.Connection      'Если таблица с таким названием уже существует - Удаляем     For Each tbl In cat.Tables         If tbl.Name = sLocalTName Then cat.Tables.Delete tbl.Name     Next      'Установка параметров таблицы     With tbl         .Name = sLocalTName         Set .ParentCatalog = cat         .Properties("Jet OLEDB:Link Provider String") = strConnect         .Properties("Jet OLEDB:Remote Table Name") = stRemTName         .Properties("Jet OLEDB:Create Link") = True     End With      'Создаём новый обьект     cat.Tables.Append tbl 
 'Обновляем список таблиц     cat.Tables.Refresh     CurrentDb.TableDefs.Refresh     DoEvents 
 LinkTable_ADOX_Bye:     Set cat = Nothing     Set tbl = Nothing     Exit Function 
 LinkTable_ADOX_Err:     LinkTable_ADOX = Err.Number     Debug.Print "Error " & Err.Number & vbCrLf & Err.Description & vbCrLf & _             "in Function: esLinkTable_ADOX"     Resume LinkTable_ADOX_Bye End Function 
 
 Private Function LinkTable_DAO(sSourceTblName As String, sConnectStr As String, Optional sLocalTblName As String = "") As Long 'es - 29.12.2012 'Создаёт подлинкованную таблицу по параметрам подключения с автоматическим созданием DSN (DAO) 'При удачном подключениии возвращает = 0 (ноль), при неудачном = КОД ОШИБКИ (номер) '-------------------------------------------------------------------- 'Аргументы: '   sSourceTblName  = Имя Таблицы Исходное (на сервере) '   sConnectStr     = Строка подключения к серверу: '   sLocalTblTName  = Локальное Имя Таблицы (по умолчанию = sSourceTblName) '-------------------------------------------------------------------- Dim tdf As New DAO.TableDef     If sLocalTblName = "" Then sLocalTblName = sSourceTblName 'Удаляем старую подлинковку (если была)     On Error Resume Next     CurrentDb.TableDefs.Delete sLocalTblName     Err.Clear     On Error GoTo LinkTable_DAO_Err 'Установка параметров создаваемой таблицы     With tdf         .Name = sLocalTblName         .Connect = sConnectStr         .SourceTableName = sSourceTblName     End With      'Создаём новый обьект Таблица     CurrentDb.TableDefs.Append tdf     DoEvents     CurrentDb.TableDefs.Refresh      LinkTable_DAO_Bye:     On Error Resume Next     Set tdf = Nothing     Exit Function 
 LinkTable_DAO_Err:     LinkTable_DAO = Err.Number     Debug.Print "Error " & Err.Number & vbCrLf & Err.Description & vbCrLf & _         "in procedure LinkTable_DAO", vbCritical, "Error!"     Resume LinkTable_DAO_Bye End Function 
 
 
 
 Результат может быть таким:
 
 Achtung!Разрядность MySQL ODBC драйвера - должна совпадать с разрядностью MSO (а не СИСТЕМЫ).
 Т.Е. Если система x64,а MSO=x32 (что довольно обычно), то - ставим драйвер - x32.
 
 Для ADOX требуются ссылки на библиотеки:
 Microsoft ADO Ext. for DDL and Security. (Version 2.1 or higher)
 Microsoft ActiveX Data Objects Library. (Version 2.1 or higher)
 
 |