SQLvariables不能在Excel查询中使用

您好,我有一个查询,不能在Excel外部SQL Server查询graphics表示,因为查询并不简单,我不能设置Excelvariables。 相反,我尝试使用declare / set在SQL中设置variables,但是当尝试导入数据时会失败。

有没有办法解决这个问题? 我需要一定的灵活性来运行查询和pipe道数据到Excel ..

好的,这里是一个要求的例子。

declare @enddate as datetime set @enddate = (select max(rpt_week) from [results].dbo.t_Data) Select * from results.dbo.t_Data where rpt_week = @enddate 

这不会运行在Excel中,显然我的查询是更复杂的,但使用variables是必不可less的,我正在寻找一种方法来做这个工作。

谢谢

在Excel中使用声明值时,您需要SET NOCOUNT ON

你的样本如下:

 SET NOCOUNT ON; declare @enddate as datetime set @enddate = (select max(rpt_week) from [results].dbo.t_Data) Select * from results.dbo.t_Data where rpt_week = @enddate 

关于这个问题还有一个问题有一个正确的答案 :

在查询中使用SET NOCCOUNT ON

当我尝试从Excel运行一个SP时,我遇到了与OP相同的问题,这个SP本来是要从embedded的SELECT返回数据的。 这是由从服务器返回的行受影响的消息引起的。 显然,Excel不能正确处理这个消息,并且返回的数据被忽略。 一旦我在我的SP中使用SET NOCOUNT ON ,数据在Excel中正确显示。

我不太清楚你想要什么,但是这里有一些注意事项:

 Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim cmd As New ADODB.Command cn.Open ServerCon ''Connection string ''Straight sql sSQL = "SELECT * FROM table_1 WHERE adate = (SELECT Max(adate) FROM table_1)" rs.Open sSQL, cn ''Not a good idea, see procedure parameter below for a better way sSQL = "SELECT * FROM table_1 WHERE adate = '" _ & Sheets("Sheet7").Range("B2") & "'" rs.Open sSQL, cn ''Stored procedure rs.Open "ExcelTest", cn ''Stored procedure with parameter cmd.ActiveConnection = cn cmd.CommandType = adCmdStoredProc cmd.CommandText = "ExcelTest" cmd.Parameters("@enddate") = Sheets("Sheet7").Range("B2") Set rs = cmd.Execute ''Write to Excel ActiveWorkbook.Sheets("Sheet12").Cells(1, 1).CopyFromRecordset rs 

您也可以使用查询表。