通过 ODBC 查询数据库时出现 VBA 自动化错误

通过 ODBC 查询数据库时出现 VBA 自动化错误

我正在尝试运行 Excel 宏来从我的 ODBC 数据库中查询一些数据。我的数据库详细信息如下:

直接连接网络sgdv 唯一标识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’:

应用程序定义或对象定义的错误

答案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:......
  • 如果是当前工作簿,则无需选择数据类型。当前工作簿本身就是活动工作簿

相关内容