尝试使用 OLEDBConnection 运行时错误“1004”运行查询:应用程序定义或对象定义错误
Posted
技术标签:
【中文标题】尝试使用 OLEDBConnection 运行时错误“1004”运行查询:应用程序定义或对象定义错误【英文标题】:Trying to run a query with OLEDBConnection Run-time error '1004': Application-defined or object-defined error 【发布时间】:2014-03-12 07:38:04 【问题描述】:我在 .Connection 上收到 1004 错误
With ActiveWorkbook.Connections(ConnectionName).OLEDBConnection
.BackgroundQuery = True
.CommandText = MyCommandText
.CommandType = xlCmdSql
.Connection = ConnectionString
ConnectionString 如下所示:
"Provider=SQLOLEDB.1" & Chr(59) & "Integrated Security=SSPI" & Chr(59) & _
"Persist Security Info=True" & Chr(59) & "Initial Catalog=wss_back" & Chr(59) & _
"Data Source=XX-X-0009999.de.xxx.com,12345" & Chr(59) & _
"Use Procedure for Prepare=1" & Chr(59) & "Auto Translate=True" & Chr(59) & _
"Packet Size=4096" & Chr(59) & "Workstation ID=XX-X-1234567" & Chr(59) & _
"Use Encryption for Data=False" & Chr(59) & _
"Tag with column collation when possible=False"
任何想法为什么会失败?
【问题讨论】:
【参考方案1】:问题出在一行:
.CommandType = xlCmdSql
CommandType 需要来自 ADODB.CommandTypeEnum
的值,但您提供的是来自 xlCmdType
的值。 xlCmdSql
= 2,和ADODB.adCommandTypeEnum.adCmdTable
一样,不是adCmdText
,这就是你想要的。
所以改成:
With ActiveWorkbook.Connections(ConnectionName).OLEDBConnection
.BackgroundQuery = True
.CommandText = MyCommandText
.CommandType = adCmdText
.Connection = ConnectionString
...它应该可以工作。
【讨论】:
以上是关于尝试使用 OLEDBConnection 运行时错误“1004”运行查询:应用程序定义或对象定义错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 OLEDBConnection 将新记录插入到带有 Visual Basic 的表中
使用两个DataAdapter使用OleDbConnection Excel到DataGridView
具有区域设置特定字符的数据库的 OleDbConnection/命令
JSON.net 直接从 oledbconnection 序列化