Ошибка автоматизации VBA при запросе базы данных через ODBC

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

DSN:sgdv UID:l8qc1 Password:l8qc1 server: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':

ошибка, определенная приложением или объектом

12
задан Mokubai
23.03.2023 10:00 Количество просмотров материала 2583
Распечатать страницу

2 ответа

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

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

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

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

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

1
отвечен Excellll 2023-03-24 17:48

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

  • если это еще одна книга, вам нужно дать полный путь, как c:......
  • если это текущая книга, нет необходимости выбирать тип данных. Сама книга является активной
-2
отвечен user511404 2023-03-24 20:05

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх