简单查询生成错误3078“ Microsoft Jet数据库引擎找不到输入表或查询”

时间:2018-12-04 15:45:24

标签: sql-server vb6 odbc dao

任何建议如何重组此简单查询?

通过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数据库引擎找不到输入表或查询”

我尝试过的事情:

  • 删除()
  • 删除“原样”和“我”。符号。
  • [Ready]周围的括号,并且没有(认为可能会保留) 关键字)。
  • 已确认该连接是针对Sql Server的ODBC(此连接也用于其他查询。

已检查的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 ...

的功能。

1 个答案:

答案 0 :(得分:-1)

因为问题很明显是查询的Select FROM (Select From)结构与ADO-> ODBC-> SQL Server不兼容,所以我的解决方案是使子查询成为SQL中的视图并更改查询以从中选择那个。