Excel到SQL Server数据连接参数发送错误的数据类型

时间:2013-08-22 23:59:06

标签: sql sql-server excel

有点难过这个。与我合作的人在SQL Server的Excel数据连接查询中遇到一些问题。当他将SQL查询从硬编码日期过滤器更改为使用参数和单元格值时,他会收到错误(无法将字符串转换为smalldatetime)。值得注意的是,查询具有多个子查询。我做了一些研究,发现了以下内容:

1)在原始查询的NetMon捕获中,将一个硬编码日期更改为参数引用,Excel将参数数据类型作为varchar(50)发送。
2)当我更改查询以将所有日期更改为参数引用时,只有最终参数作为varchar(50)发送,其余参数作为smalldatetime发送(与表的数据类型匹配)。
3)当我更改查询以删除子查询但没有别的时,查询返回正确,Excel发送正确的数据类型。在这种情况下,只有一个参数 4)当我将查询转储到存储过程并从同一个Excel数据连接调用时,参数都可以正常工作。

我尝试移动细胞,以便我可以看到它是JET-like problem of Excel checking the top 8 rows of data to determine datatype - 不是问题。

为什么会这样?正如我所提到的 - 难倒。

代码基本上是这样的:

SELECT Name
, Sum(Sales) AS Sales
, (SELECT SUM(Cost) FROM Costcenter where Date > ? AND Date <= ?) As Costs
FROM SalesTable
Where Date = ?
Group by name
Order by name

最后的?WHERE条款中的那个让我感到悲伤。

1 个答案:

答案 0 :(得分:0)

遇到此问题的同事发现了以下解决方法。在单元格中输入日期时,请使用以下公式:

=TEXT(EDATE('3/13/2013'),0),"MM/DD/YYYY")

不理想,但对于只需要获取数据的用户来说,这是一个快速解决方法。