尝试在 Excel 中使用 VBA 连接到数据库时出错

Posted

技术标签:

【中文标题】尝试在 Excel 中使用 VBA 连接到数据库时出错【英文标题】:Errors when trying to connect to a database using VBA in excel 【发布时间】:2012-12-27 06:35:08 【问题描述】:

我正在尝试在 Excel 中使用 VBA 连接到数据库,但不知道出了什么问题。有什么建议吗?

这里是代码。我想同时获取查询结果并放入excel表格中

Private Sub CommandButton1_Click()

Dim dd As String
Dim nn As String

OMCS_Connection.Show

If OMCS_Connection.CommandButton1 = False Then

dd = OMCS_Connection.TextBoxa.Value
nn = OMCS_Connection.TextBoxb.Value
End If

Dim order_number As String
order_number = TextBox1.Text
Dim sql_query As String

Set ad = CreateObject("ADODB.Connection")      'create and open ODBC connection
ad.ConnectionString = "ODBC;DRIVER=IBM DB2 ODBC DRIVER - DB2COPY1; DSN=ODRPTDB;UID = " & dd & " ; PWD = " & nn & ";"
'UID=me"
ad.Open

sql_query = "SELECT" & _
                "CMOT.MFGNO AS MANUFACTURING_NUMBER," & _
                "'BOX' AS ORDER_TYPE," & _
                "CMOT.IDCUS AS CUSTOMER_ID," & _
                "CMOT.WTCTN AS WT_CUSTOMER_ID," & _
                "CMOT.PLORN AS ORDER_NUMBER," & _
                "CMOT.IDMAC AS MACHINE_TYPE," & _
                "CMOT.IDSMN AS MODEL_NUMBER," & _
                "'    ' AS NEW_MACHINE_TYPE," & _
                "'    ' AS NEW_MODEL_NUMBER," & _
                "CMOT.BOXSH AS PSSD," & _
                "CMOT.ALDPF AS RSSD," & _
                "COGUS.ITPDC AS REGION" & _
                "FROM DB2COATG.COS1S0T0 CMOT" & _
                "INNER JOIN COGUS.WTCTN_CONVERSION COGUS" & _
                "ON(COGUS.WTCTN = CMOT.WTCTN AND COGUS.REGIO = CMOT.REGIO)" & _
                "WHERE CMOT.PLORN IN  (" & order_number & ");"


Set RS = ad.Execute(sql_query)        'execute query

【问题讨论】:

嗨,我可以知道错误信息是什么吗? 嗨拉里,这是我得到的错误:SQL30081N 检测到通信错误。正在使用的通信协议:“TCP/IP”。正在使用的通信 API:“SOCKETS”。检测到错误的位置:“127.0.0.1”。检测错误的通信函数:“selectForConnectTimeout”。协议特定错误代码:“0”、“”、“”。 SQLSTATE=08001 【参考方案1】:

在 ad.open 之前尝试插入以下行 ad.CommandTimeout=0 如果查询运行时间过长,这应该可以防止查询超时。 如果这不起作用,这将有助于了解哪行代码引发了错误。你知道如何一步步思考代码吗?

【讨论】:

非常感谢,我刚刚使用了另一个代码,它运行良好。

以上是关于尝试在 Excel 中使用 VBA 连接到数据库时出错的主要内容,如果未能解决你的问题,请参考以下文章

使用 VBA 将 Excel 表连接到 SQL Server

使用 VBA 连接到 SAP HANA 数据库

如何正确地从 Excel 工作表的 VBA 连接到另一个 Excel 工作表?

无法通过Excel VBA连接到SQL数据库。

连接到本地 SQL Server 数据库的问题

奇怪的情况,使用 ADO 在 Excel VBA 中定义连接到 Access .accdb 数据库的文件路径,但是它告诉我找不到 .mdb 文件