|
|
|
| Добрый день. есть задачка. есть таблица excel, необходимо чтобы в макросе на vba реализовать доступ к БД MySQL и потом некоторые поля excel записать в таблицы БД.
Вопрос 1: возможно ли из excel через vba осуществить доступ к БД MySQL?
Вопрос 2: подскажите пожалуйста как правильно осуществить connect (open) к БД MySQL из vba? | |
|
| |
|
|
|
| ПОдключиться к MySql можно двумя способами
1. установить драйвер ODBC для MySql
2. использовать специальную библиотеку libmySQL.dll
как работать с библиотекой - не знаю, не пробовал
в через ODBC очень просто
- создаете ODBC DSN к вашей базе
- в Excel создаете ADO connection используюя созданный DSN
- дальше открываете ADO рекордсет и данне из него записываете в ячейки Excel | |
|
| |
|
|
|
| просто я пробовал сделать похожее из Access с помощью
Set базаДанных = рабочаяОбласть.CreateDatabase (имя, порядок, параметры)
так вот я не смог понять какой файл надо указать в имени... (если это база access то все понятнр, просто указывается файл.mdb, а вот для mysql там ест ьтри файла для каждой таблицы бд.. а где основной файл лежит я не понял:( ) | |
|
| |
|
|
|
| Из Help
Creates a new Database object, saves the database to disk, and returns an opened Database object (Microsoft Jet workspaces only).
|
| |
|
| |
|
|
|
| тьфу:) протупил конечно я пробовал
Set базаДанных = рабочаяОбласть.OpenDatabase (имяБД, параметры, толькоЧтение, подключение) | |
|
| |
|
|
|
| может это надо было использовать?
Set подключение = рабочаяОбласть.OpenConnection (имя, параметры, толькоЧтение, строка)
кстати щас поставил вроде драйвер ODBC, создал там DSN... только в командах ADO ни в зуб ногой:( | |
|
| |
|
|
|
| вот нашел примерчик:)
Dim con As ADODB.Connection
Dim rst As ADODB.Recordset
Set con = New ADODB.Connection
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=диск:\Путь\база.mdb"
Set rst = New ADODB.Recordset
rst.Open "SElect * from tbl_dogovora", con
Do While Not rst.EOF
Debug.Print rst.Fields("Поле").Value
rst.MoveNext
Loop
rst.Close
con.Close
вот так вот проблемка "Data Source=диск:\Путь\база.mdb" а я не знаю какой файл надо указать если БД в MySQl... | |
|
| |
|
|
|
| для работы с MySQL нужен ODBC драйвер | |
|
| |
|
|
|
| поставил.. дальше что сделать:)? | |
|
| |
|
|
|
| Это подключение Microsoft.Jet баз
для подключения через ODBC нужно что-то подобное
Con.Open "DSN=ИмяODBCCоединения;Uid=Имя;Pwd=Пароль"
|
ТОлько предварительно нужно установить ODBC драйвер для Mysql и создать ODBC соединение | |
|
| |
|
|
|
| щас задам тупой вопрос...
Con.Open - это команда vba?
ODBC драйвер я поставил для Mysql и создать ODBC соединение с базой! | |
|
| |
|
|
|
| Con.Open - это метод объекта connection библиотеки ADODB выдран из контекста приведенного выше кода | |
|
| |
|
|
|
| тфьу опять тупанул , даже стыдно:)
ладно буду пробовать разобраться:) | |
|
| |
|
|
|
| создал элементарный код
Set cn = New ADODB.Connection
cn.Provider = "MSDASQL"
cn.ConnectionString = "DSN=mytest"
cn.Open
DSN прописал в винде (администрирование\источник данных ODBC и т.д)...
при запуске выдается ошибка
Run-time error '-2147467259 (80004005)'
[TCX][MyODBC]Client does not support authentification protocol requested by server; consider upgrading MySQL client
что я не правильно делаю? может тчего забыл указть при создании DSN? | |
|
| |