【问题标题】:Simple query generates Error 3078 "The Microsoft Jet database engine cannot find the input table or query"简单查询生成错误 3078“Microsoft Jet 数据库引擎找不到输入表或查询”
【发布时间】:2018-12-04 15:45:23
【问题描述】:

对如何重构这个简单的查询有什么建议吗?

通过 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 企业管理器中,它按预期运行得很好。击中原始 Access DB 效果很好。但不知何故,通过 ODBC 访问 SQL Server 的 DAO 正在生成:

“Microsoft Jet 数据库引擎找不到输入表或查询”

我尝试过的事情:

  • 删除 ()
  • 删除“as I”和“I”。符号。
  • [Ready] 周围的括号和没有(认为它可能被保留) 关键字)。
  • 确认连接到 ODBC for Sql Server(此连接也用于其他查询。

检查了 SQL 分析工具并且查询正在发送到服务器(已编辑,我在 SQL Express 上检查了错误的工具)

编辑:为了满足大家的担心,我并没有真正使用 SQL Server,我将 SQL 命令编辑为更简单的

SELECT DISTINCT sType, BarcodeID From [Ready]

而且在同一个连接上也能正常工作,所以连接100%确认是SQL Server,报错信息有误(报“Access”)。

所以问题毫无疑问是来自查询的查询。

更新:

确实证实了我的怀疑,即查询,尽管是正常的,但不能与 ADO-> ODBC-> Sql Server 一起使用。

SQL 所做的第一步是尝试验证“来自”表(在本例中不是表,而是查询本身)的列等。

当我运行基本的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],它当然不存在并且返回错误 (exec sp_special_columns N'SELECT DISTINCT sType, BarcodeID From [Ready]',NULL,NULL,N'V',N'T',N'U' )。 VB6/ADO 正确报告 SQL 说找不到表。显然,来自查询的这个查询阻碍了 ADO->ODBC...

的功能

【问题讨论】:

  • 您确定您访问的是正确的数据库吗? “Microsoft Jet”建议使用 Access,而不是 SQL Server
  • @Diado -- 很好的建议,是的。我应该补充说我也检查过。该连接显然是到我的 SQL Server 的 ODBC 连接。但你是对的,这条消息让我立即确认没有 Access 仍在播放。事实上,Access MDB 所在的“文件夹”已被重命名,因此它不可能找到它们。 :(
  • 考虑到 OP 声明 “已检查 SQL Profiler 并且查询甚至没有发送到服务器” @Diado 我认为这也几乎证实了问题. JET 不能用于连接 SQL Server,它用于连接 2007 之前的 Office 文件(如 Access 和 Excel 文件)。 2010+ 使用 ACE,而 SQl Server 使用 ODBC。错误说明 JET 的事实清楚地表明没有使用正确的驱动程序。我建议 OP 分享他们的代码,因为这里的 SQL 语句不是问题。
  • @Lamu -- 见上面的回复。绝对在正确的连接上,所以它是 SQL。
  • @klkitchens 你能分享你用来连接数据库的代码吗?

标签: sql-server vb6 odbc dao


【解决方案1】:

由于问题显然是查询与 ADO->ODBC->SQL Server 不兼容的查询的 Select FROM (Select From) 结构,我的解决方案是简单地使子查询成为 SQL 中的视图并更改查询以从中进行选择。

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多