Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2013, 14:22   #1
riko_ltd
 
Регистрация: 26.09.2012
Сообщений: 4
По умолчанию Экспорт из excel в базу MySQL средствами VBA

Помогите записать данные из книги эксель в базу MySQL.
Это нужно макросом делать - обратный путь стандартный макрокодер записал - данные из базы получить могу, а записать в базу не знаю как.
Установлен mysql-connector-odbc-5.2.5-win32
SQL команда для записа сроки в базу выглядит так:

INSERT INTO `invoices` (`id`, `start_date`, `end_date`, `issue_date`, `direction`, `payer_type`, `payer_id`, `account_id`, `invoice_template_id`, `prepaid`, `start_balance`, `end_balance`, `paid`, `refilled`, `discount`, `total_amount`, `_agent_id`, `_department_id`) VALUES (1, '2012-04-02', '2012-04-08', '2012-04-16 11:55:56', 'from_account', 'company', 2, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0.51, 2, 2)

Макрос с подключением к базе и получением из нее данных выглядит так (может тут есть нужные параметры):
Sub Макрос1()
'
Range("A4").Select
With ActiveSheet.ListObjects.Add(SourceT ype:=0, Source:= _
"ODBC;DSN=MySQL_Connection;", Destination:=Range("$A$4")).QueryTa ble
.CommandText = Array( _
"SELECT invoices_0.id, invoices_0.start_date, invoices_0.end_date, invoices_0.issue_date, invoices_0.direction, invoices_0.payer_type, invoices_0.payer_id, invoices_0.account_id, invoices_0.invoice_tem" _
, _
"plate_id, invoices_0.prepaid, invoices_0.start_balance, invoices_0.end_balance, invoices_0.paid, invoices_0.refilled, invoices_0.discount, invoices_0.total_amount, invoices_0.`_agent_id`, invoices_0.`" _
, "_department_id`" & Chr(13) & "" & Chr(10) & "FROM config.invoices invoices_0")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Òàáëèöà_Çàïðîñ_èç_MySQL_Connection _1"
.Refresh BackgroundQuery:=False
End With
End Sub



Насколько я понял нужно в ВБА запустить Microsoft Query и там выполнить команду на запись строки в базу...
Но может и до другому как то...

Подскажите пожалуйста как оформить этот макрос - я раньше с MySQL не сталкивался, поэтому очень трудно разобраться что и как делать.
riko_ltd вне форума Ответить с цитированием
Старый 13.06.2013, 17:51   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Посмотрите ЗДЕСЬ
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 17.06.2013, 20:31   #3
riko_ltd
 
Регистрация: 26.09.2012
Сообщений: 4
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Посмотрите ЗДЕСЬ
Спасибо - взял ваш пример за основу. К базе подключается - а дальше пишет - Драйвер ODBС не поддерживает требуемые свойства.

Ваш код под свои данные переделал - получилось так

Const strConn As String = "Provider=MSDASQL.1;Persist Security Info=False;User ID=root;Data Source=MySQL_Conn_Local;Initial Catalog=config"
Public Cnn As String

Sub IMPORT()

Dim Cnn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Cmd As ADODB.Command
Set Cnn = New ADODB.Connection
Set Rs = New ADODB.Recordset
Set Cmd = New ADODB.Command

Cnn.ConnectionString = strConn
Cnn.Open

Rs.Open "SELECT * FROM config WHERE start_date > '1900-01-01' ", Cnn, adOpenStatic, adLockReadOnly
Range("A1").CopyFromRecordset Rs

Rs.Close
Cnn.Close

End Sub


Ругается на строчке - Rs.Open "SELECT * FROM config WHERE start_date > '1900-01-01' ", Cnn, adOpenStatic, adLockReadOnly

Что тут не так?
riko_ltd вне форума Ответить с цитированием
Старый 17.06.2013, 21:01   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Какими словами ругается?
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 17.06.2013, 21:18   #5
riko_ltd
 
Регистрация: 26.09.2012
Сообщений: 4
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Какими словами ругается?
Пардон - не правильно указал где в базе брать - FROM config изменил на FROM config.invoices и работает.
Сейчас попробую экспорт подогнать - надеюсь не прийдется вас беспокоить. Спасибо.
riko_ltd вне форума Ответить с цитированием
Старый 18.06.2013, 01:50   #6
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Можно и
" USE config ;SELECT * FROM invoices
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конвертация базы MSSQL в базу MySQL средствами DELPHI Igolka6662 БД в Delphi 0 05.05.2012 12:16
Разделить значения таблицы в документе word из excel средствами vba xamillion Microsoft Office Word 5 07.11.2010 19:25
Экспорт данных из Mysql в Excel GreenShuller БД в Delphi 1 14.07.2010 04:15
Запуск какой либо Windows-программы из Excel средствами VBA kovalevskivf Microsoft Office Excel 3 21.05.2009 15:14
Как средствами VBA экспортировать данные из Excel в Word? Pavel_Ine Microsoft Office Excel 3 20.04.2009 14:14