Sql 运行时错误'-2147217900(80040e14)和#x27;:自动化误差

Sql 运行时错误'-2147217900(80040e14)和#x27;:自动化误差,sql,excel,vba,Sql,Excel,Vba,1.)错误发生在“Set rs=conn.Execute(SQLCODE)”行中,但当我在SQL management studio中运行SQL代码时,它运行时没有任何错误。你们能帮忙吗 子连接SQLServer() Dim conn作为ADODB连接 将rs设置为ADODB.Recordset Dim sConnString作为字符串 将SQLCODE设置为字符串 '创建连接字符串。 sConnString=“Provider=SQLOLEDB;数据源=MSPRTDBP;”和_ “初始目录=M

1.)错误发生在“Set rs=conn.Execute(SQLCODE)”行中,但当我在SQL management studio中运行SQL代码时,它运行时没有任何错误。你们能帮忙吗

子连接SQLServer()
Dim conn作为ADODB连接
将rs设置为ADODB.Recordset
Dim sConnString作为字符串
将SQLCODE设置为字符串
'创建连接字符串。
sConnString=“Provider=SQLOLEDB;数据源=MSPRTDBP;”和_
“初始目录=MSPWIP;”和_
“集成安全=SSPI;”
'创建连接和记录集对象。
Set conn=新的ADODB.连接
Set rs=New ADODB.Recordset
连接打开的sConnString
SQLCODE=“选择WoIDfromTable1”
设置rs=conn.Execute(SQLCODE)
“检查我们是否有数据。
如果不是卢比,那么
“转移结果。
工作表(“基础”)。激活
活动页。范围(“A2:H500”)。清除
ActiveSheet.Range(“A2”).CopyFromRecordset rs
'关闭记录集
rs.Close
其他的
MsgBox“错误:未返回任何记录”,vbCritical
如果结束
“清理
如果CBool(连接状态和adStateOpen),则连接关闭
设置连接=无
设置rs=无
端接头

对于
SQLCODE

换成这个

SQLCODE = "SELECT WOID, PN, WOQTY, StartDate, CS, Station, SUM(QtyStarted) AS QtyStart, SUM(FailedQty) AS QtyFail FROM(SELECT r.WorkOrderBatch AS WOID, wo.ProductCode AS PN, wo.WorkOrderQty AS WOQTY, CONVERT(DATE, wo.StartDate) AS StartDate, wo.CurrentStatus AS CS,  " & _
          "CASE PCID WHEN 'AC.01.BN.01' THEN 'Burn-in' WHEN 'AC.01.FT.01' THEN 'Final' WHEN 'AC.01.FT.02' THEN 'Final' WHEN 'AC.01.FT.02' THEN 'Final' ELSE NULL END AS Station, COUNT(DISTINCT r.UnitIdentifier) AS QtyStarted, SUM(CASE r.IsTestPass WHEN 1 THEN 0 ELSE 1 END) AS FailedQty FROM [MSPTestResult].[MSPTestResult].[Result] r " & _
          "JOIN [MSPWIP].[MSPWIP].[WorkOrder](NOLOCK)wo ON r.workorderbatch=wo.workordernumber JOIN [MSPWIP].[MSPWIP].[BillOfOperation](NOLOCK)bo ON wo.wipworkorderid=bo.wipworkorderid AND bo.operationdescription=r.teststage " & _
          "WHERE 1=1 AND PCID IN ('AC.01.BN.01', 'AC.01.FT.01', 'AC.01.FT.02', 'AC.01.FT.02')AND wo.ProductCode IN ('R350-102')AND(wo.StartDate>(GETDATE()-7)OR wo.CurrentStatus IN ('In Progress')) " & _
          "GROUP BY r.WorkOrderBatch, wo.ProductCode, WorkOrderQty, StartDate, CurrentStatus, (PCID)) AS SUB GROUP BY WOID, PN, WOQTY, StartDate, CS, Station ORDER BY WOID ASC;"

在每个
When
Else
之前都缺少一个空格。您可以执行
COUNT(DISTINCT r.UnitIdentifier)
-不确定它应该是哪种风格的SQL,所以
CASE
语句也可以工作吗?
('R350-102')和
@DarrenBartrup-Cook Good spot中的
前面缺少空格-刚刚在SSMS中重新格式化了整个SQL查询。你觉得现在应该把他们都弄到手了吗