Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: VBA MS Office

Программирования для MS Office кроме ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: connect DB, vba excel MySQL
 
 автор: joka   (30.01.2008 в 08:54)   личное сообщение
 
 

Добрый день. есть задачка. есть таблица excel, необходимо чтобы в макросе на vba реализовать доступ к БД MySQL и потом некоторые поля excel записать в таблицы БД.

Вопрос 1: возможно ли из excel через vba осуществить доступ к БД MySQL?
Вопрос 2: подскажите пожалуйста как правильно осуществить connect (open) к БД MySQL из vba?

  Ответить  
 
 автор: osmor   (30.01.2008 в 10:21)   личное сообщение
 
 

ПОдключиться к MySql можно двумя способами
1. установить драйвер ODBC для MySql
2. использовать специальную библиотеку libmySQL.dll
как работать с библиотекой - не знаю, не пробовал
в через ODBC очень просто
- создаете ODBC DSN к вашей базе
- в Excel создаете ADO connection используюя созданный DSN
- дальше открываете ADO рекордсет и данне из него записываете в ячейки Excel

  Ответить  
 
 автор: joka   (30.01.2008 в 11:04)   личное сообщение
 
 

просто я пробовал сделать похожее из Access с помощью

Set базаДанных = рабочаяОбласть.CreateDatabase (имя, порядок, параметры)

так вот я не смог понять какой файл надо указать в имени... (если это база access то все понятнр, просто указывается файл.mdb, а вот для mysql там ест ьтри файла для каждой таблицы бд.. а где основной файл лежит я не понял:( )

  Ответить  
 
 автор: osmor   (30.01.2008 в 11:09)   личное сообщение
 
 

Из Help

Creates a new Database object, saves the database to disk, and returns an opened Database object (Microsoft Jet workspaces only).

  Ответить  
 
 автор: joka   (30.01.2008 в 11:12)   личное сообщение
 
 

тьфу:) протупил конечно я пробовал
Set базаДанных = рабочаяОбласть.OpenDatabase (имяБД, параметры, толькоЧтение, подключение)

  Ответить  
 
 автор: joka   (30.01.2008 в 11:14)   личное сообщение
 
 

может это надо было использовать?
Set подключение = рабочаяОбласть.OpenConnection (имя, параметры, толькоЧтение, строка)

кстати щас поставил вроде драйвер ODBC, создал там DSN... только в командах ADO ни в зуб ногой:(

  Ответить  
 
 автор: joka   (30.01.2008 в 11:19)   личное сообщение
 
 

вот нашел примерчик:)

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...

  Ответить  
 
 автор: ДрЮня   (30.01.2008 в 11:21)   личное сообщение
 
 

для работы с MySQL нужен ODBC драйвер

  Ответить  
 
 автор: joka   (30.01.2008 в 11:35)   личное сообщение
 
 

поставил.. дальше что сделать:)?

  Ответить  
 
 автор: osmor   (30.01.2008 в 11:54)   личное сообщение
 
 

Это подключение Microsoft.Jet баз
для подключения через ODBC нужно что-то подобное

Con.Open "DSN=ИмяODBCCоединения;Uid=Имя;Pwd=Пароль"

ТОлько предварительно нужно установить ODBC драйвер для Mysql и создать ODBC соединение

  Ответить  
 
 автор: joka   (30.01.2008 в 13:13)   личное сообщение
 
 

щас задам тупой вопрос...

Con.Open - это команда vba?

ODBC драйвер я поставил для Mysql и создать ODBC соединение с базой!

  Ответить  
 
 автор: osmor   (30.01.2008 в 13:26)   личное сообщение
 
 

Con.Open - это метод объекта connection библиотеки ADODB выдран из контекста приведенного выше кода

  Ответить  
 
 автор: joka   (30.01.2008 в 13:37)   личное сообщение
 
 

тфьу опять тупанул , даже стыдно:)

ладно буду пробовать разобраться:)

  Ответить  
 
 автор: joka   (05.02.2008 в 20:48)   личное сообщение
 
 

создал элементарный код

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?

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList