任何建议如何重组此简单查询?
通过VB6使用DAO命中SQL Server数据库(已更新旧代码以与新数据库一起使用),并且以某种方式在其中一个应用程序中进行此查询非常合适。
Select I.sType, Count(I.BarcodeID) AS CountOfID
FROM (SELECT DISTINCT sType, BarcodeID From [Ready]) as I
GROUP BY I.sType
ORDER BY sType
我已将查询粘贴到SQL Enterprise Manager中,它按预期运行得很好。它可以很好地访问原始的Access DB。但是以某种方式通过ODBC击中SQL Server的DAO正在生成:
“ Microsoft Jet数据库引擎找不到输入表或查询”
我尝试过的事情:
已检查的SQL分析工具,并且查询正在将其发送到服务器(已编辑,我在SQL Express上检查了错误的工具)
编辑:只是为了让所有人都担心我并没有真正击中SQL Server,我将SQL命令编辑为更简单的
SELECT DISTINCT sType, BarcodeID From [Ready]
并且它在同一连接上可以正常工作,因此100%确认该连接为SQL Server,错误消息错误(报告为“ Access”)。
毫无疑问,问题出在查询中。
更新:
绝对证实了我的怀疑,尽管这是一个正常的查询,但它不适用于ADO-> ODBC-> Sql Server。
SQL要做的第一步是尝试验证“ from”表(在这种情况下不是表,而是查询本身)的列等。
当我运行基本的SELECT DISTINCT sType, BarcodeID From [Ready]
时,SQL将检查称为“ Ready”(exec sp_special_columns N'Ready',NULL,NULL,N'V',N'T',N'U'
)的表的列,键,索引等,然后继续返回结果。
当我使用子查询时,SQL在表def上执行相同的检查,但是对于名为SELECT DISTINCT sType, BarcodeID From [Ready]
的表当然不存在,并且返回错误({ {1}})。 VB6 / ADO正在正确报告说SQL未找到表。因此,很明显,来自查询的该查询阻碍了ADO-> ODBC ...
答案 0 :(得分:-1)
因为问题很明显是查询的Select FROM (Select From)
结构与ADO-> ODBC-> SQL Server不兼容,所以我的解决方案是使子查询成为SQL中的视图并更改查询以从中选择那个。