简单查询生成错误 3078 "The Microsoft Jet database engine cannot find the input table or query"
Simple query generates Error 3078 "The Microsoft Jet database engine cannot find the input table or query"
有什么建议可以重构这个简单的查询吗?
通过 VB6 使用 DAO 访问 SQL 服务器数据库(更新旧代码以与新数据库一起使用)并且其中一个应用程序中的此查询不知何故适合。
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 企业管理器中,它 运行 正如预期的那样正常。它可以很好地命中原始的 Access DB。但是不知何故,通过 ODBC 的 DAO 命中 SQL 服务器正在生成:
"The Microsoft Jet database engine cannot find the input table or query"
我尝试过的事情:
- 删除 ()
- 删除 "as I" 和 "I." 符号。
- [Ready] 周围的括号和没有(认为它可能被保留
关键词)。
- 已确认连接到 Sql 服务器的 ODBC(此连接也用于其他查询。
检查了 SQL 分析工具,查询 正在发送到服务器(已编辑,我在 SQL Express 上检查了错误的工具)
编辑:为了消除大家对我没有真正访问 SQL 服务器的担忧,我将 SQL 命令编辑为更简单的
SELECT DISTINCT sType, BarcodeID From [Ready]
并且在同一个连接上正常工作,所以连接100%确认是SQL服务器,报错信息有误(报"Access")。
所以问题毫无疑问是来自查询的查询。
更新:
明确证实了我的怀疑,即查询虽然是正常查询,但无法与 ADO-> ODBC-> Sql 服务器一起使用。
SQL 所做的第一步是尝试验证 "from" table 的列等(在本例中不是 table ,而是一个查询本身)。
当我 运行 一个基本的 SELECT DISTINCT sType, BarcodeID From [Ready]
SQL 检查 table 的列、键、索引等称为 "Ready" (exec sp_special_columns N'Ready',NULL,NULL,N'V',N'T',N'U'
),然后继续 return 结果。
当我使用子查询时,SQL 在 table def 上触发相同的检查,但对于 table 调用 SELECT DISTINCT sType, BarcodeID From [Ready]
这当然不存在,它 return 是一个错误 (exec sp_special_columns N'SELECT DISTINCT sType, BarcodeID From [Ready]',NULL,NULL,N'V',N'T',N'U'
)。 VB6/ADO 正确报告 SQL 表示未找到 table。显然,这个来自查询的查询阻碍了 ADO->ODBC 的功能...
由于问题显然是查询查询的 Select FROM (Select From)
结构与 ADO->ODBC->SQL 服务器不兼容,我的解决方案只是将子查询设为 SQL 并将查询更改为 select。
有什么建议可以重构这个简单的查询吗?
通过 VB6 使用 DAO 访问 SQL 服务器数据库(更新旧代码以与新数据库一起使用)并且其中一个应用程序中的此查询不知何故适合。
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 企业管理器中,它 运行 正如预期的那样正常。它可以很好地命中原始的 Access DB。但是不知何故,通过 ODBC 的 DAO 命中 SQL 服务器正在生成:
"The Microsoft Jet database engine cannot find the input table or query"
我尝试过的事情:
- 删除 ()
- 删除 "as I" 和 "I." 符号。
- [Ready] 周围的括号和没有(认为它可能被保留 关键词)。
- 已确认连接到 Sql 服务器的 ODBC(此连接也用于其他查询。
检查了 SQL 分析工具,查询 正在发送到服务器(已编辑,我在 SQL Express 上检查了错误的工具)
编辑:为了消除大家对我没有真正访问 SQL 服务器的担忧,我将 SQL 命令编辑为更简单的
SELECT DISTINCT sType, BarcodeID From [Ready]
并且在同一个连接上正常工作,所以连接100%确认是SQL服务器,报错信息有误(报"Access")。
所以问题毫无疑问是来自查询的查询。
更新:
明确证实了我的怀疑,即查询虽然是正常查询,但无法与 ADO-> ODBC-> Sql 服务器一起使用。
SQL 所做的第一步是尝试验证 "from" table 的列等(在本例中不是 table ,而是一个查询本身)。
当我 运行 一个基本的 SELECT DISTINCT sType, BarcodeID From [Ready]
SQL 检查 table 的列、键、索引等称为 "Ready" (exec sp_special_columns N'Ready',NULL,NULL,N'V',N'T',N'U'
),然后继续 return 结果。
当我使用子查询时,SQL 在 table def 上触发相同的检查,但对于 table 调用 SELECT DISTINCT sType, BarcodeID From [Ready]
这当然不存在,它 return 是一个错误 (exec sp_special_columns N'SELECT DISTINCT sType, BarcodeID From [Ready]',NULL,NULL,N'V',N'T',N'U'
)。 VB6/ADO 正确报告 SQL 表示未找到 table。显然,这个来自查询的查询阻碍了 ADO->ODBC 的功能...
由于问题显然是查询查询的 Select FROM (Select From)
结构与 ADO->ODBC->SQL 服务器不兼容,我的解决方案只是将子查询设为 SQL 并将查询更改为 select。