2

Я пытаюсь запустить макрос Excel для запроса некоторых данных из моей базы данных ODBC. Мои данные базы данных, как показано ниже:

DSN: sgdv UID: l8qc1 Пароль: l8qc1 сервер: sgdv

Я пытаюсь запросить данные из базы данных, но VBA показывает ошибку, как показано ниже для строки Connection.Open "DSN=sgdv" .

Ошибка времени выполнения -2147217843 (80040e4d) Ошибка автоматизации

Я не могу определить ошибку. Пожалуйста помоги. Ниже мой код

Sub ReadDB()
Dim mainWorkBook As Workbook
Dim intRowCounter
Set mainWorkBook = ActiveWorkbook
intRowCounter = 2
mainWorkBook.Sheets("Sheet2").Range("A2:Z100").Clear
Set Connection = CreateObject("ADODB.Connection")
Connection.Open "DSN=sgdv"
strQuery = "SELECT * FROM DEDICT01 where DEDICT01.SER_SN='Z1E80R4C'"
Set resultSet = Connection.Execute(strQuery)
Do While Not resultSet.EOF
    mainWorkBook.Sheets("Sheet2").Range("A" & intRowCounter).Value = resultSet.Fields("DEDICT01.CUST_PARTS_NO").Value
  resultSet.movenext
Loop
resultSet.Close
End Sub

Я изменил программу, и моя новая кодировка

Sub ReadDB()
Dim mainWorkBook As Workbook
Dim intRowCounter
Set mainWorkBook = ActiveWorkbook
intRowCounter = 2
mainWorkBook.Sheets("Sheet2").Range("A2:Z100").Clear
Set Connection = CreateObject("ADODB.Connection")
Connection.ConnectionString = "DSN=sgdv;UID=l8qc1;PWD=l8qc1;"
Connection.Open
strQuery = "SELECT * FROM DEDICT01 where DEDICT01.SER_SN='Z1E80R4C'"
Set resultSet = Connection.Execute(strQuery)
Do While Not resultSet.EOF
    mainWorkBook.Sheets("Sheet2").Range("A" & intRowCounter).Value = resultSet.Fields("DEDICT01.CUST_PARTS_NO").Value
  resultSet.movenext
Loop
resultSet.Close
End Sub

Моя предыдущая ошибка исчезла, но теперь я получаю новую ошибку в строке

mainWorkBook.Sheets("Sheet2").Range("A" & intRowCounter).Value = resultSet.Fields("DEDICT01.CUST_PARTS_NO").Value

Ошибка

Ошибка времени выполнения '3265':

Ошибка приложения или объекта

2 ответа2

1

Проблема в вашей строке подключения. Обратите внимание, что вы упомянули информацию UID, пароль и т.д. В своем вопросе, но эта информация нигде не отображается в вашем коде. Чтобы подключиться к базе данных, вы должны указать эту информацию в строке подключения.

Попробуйте следующее:

Connection.ConnectionString = "DSN=sgdv;UID=l8qc1;PWD=l8qc1;"
Connection.Open 

Я не могу гарантировать, что это сработает, но это должно, по крайней мере, привести вас на правильный путь. Если это не работает, вам может понадобиться настроить строку подключения. Дополнительные сведения о соединениях ADODB и строках соединения см. На этой странице MSDN:

https://msdn.microsoft.com/en-us/library/ms807027.aspx

-2

Ответ зависит от того, что вы имеете в виду под mainworkbook

  • если это еще одна рабочая книга, вам нужно указать полный путь, например c:......
  • если это текущая рабочая книга, нет необходимости выбирать тип данных. Сама текущая рабочая книга является активной рабочей книгой

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .