2016-02-04 6 views
0

Я только начал смотреть в взаимодействующей с базой данных SQL с помощью Excel VBA, и я начал с основного кода соединения от MSDN:Excel VBA для SQL базы данных

Sub GetDataFromADO() 
'Declare variables' 
    Set objMyConn = New ADODB.Connection 
    Set objMyRecordset = New ADODB.Recordset 
    Dim strSQL As String 

'Open Connection' 
    objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=fatcoin;User ID=root;Password=root;" 
    objMyConn.Open 

'Set and Excecute SQL Command' 
    strSQL = "select * from productlist" 

'Open Recordset' 
    Set objMyRecordset.ActiveConnection = objMyConn 
    objMyRecordset.Open strSQL 

'Copy Data to Excel' 
    ActiveSheet.Range("A1").CopyFromRecordset (objMyRecordset) 
End Sub 

Проблема у меня есть в то время как у меня есть SQL экземпляр работает на моей машине, на порт 3306, который я могу получить доступ, используя, например, HeidiSQL, каждый раз, когда я запускаю этот код, я получаю сообщение об ошибке:

[DBNETLIB] [ConnectionOpen (соединение()).] SQL Server не существует или доступ запрещен

Я также попытался добавить порт:

objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=localhost,3306;Initial Catalog=fatcoin;User ID=root;Password=root;" 

и другие подобные вещи. Я не вижу причин, по которым он не должен работать, но я не играл с этим вообще. Я пробовал искать другие темы безрезультатно.

Любые идеи? Я работаю с Excel 2010 на 64-битной машине, используя MySQL 5.7 Я должен упомянуть, что вышеуказанная кодировка вводится в раздел «Module1» проекта VBAP в Excel. Спасибо

+0

Вы говорите, что у вас есть сервер mysql, но вы пытаетесь подключиться к серверу ms sql. Установите 64-битный myodbc с сайта mysql, затем проверьте строку подключения на connectionstrings.com. – Shadow

+0

Я немного запутался здесь. У меня уже есть myodbc из-за моей установки MySQL. Я проверил connectionstrings.com и, похоже, указал ту же строку соединения, что и в списке. Он также имеет другую строку с Provider = MySQLProv, но Excel говорит, что это недействительный провайдер – Woody

+0

Когда я проверяю connectionstring.com, то для 64-битного myodbc я вижу следующий пример: 'Driver = {MySQL ODBC 5.2w Driver}; Server = локальный; Database = MyDatabase; User = myUsername; Password = myPassword; Option = 3; 'Это полностью отличается от вашего. Но вы можете использовать графический интерфейс myodbc для создания соединения, которое вы можете использовать в Excel. – Shadow

ответ

0

Спасибо за ответы. Я решил свой вопрос через полезную ссылку, я обнаружил, что предложил перейти в 32-разрядный ODBC (потому что Excel 32-разрядный) и создать системный DSN. Затем я использовал строку соединений ниже:

objMyConn.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;User ID=root;Data Source=localhost;Initial Catalog=fatcoin" 

Это работало.

Смежные вопросы