【问题标题】:Missing operator in query expression with OleDb going into an Access databaseOleDb 进入 Access 数据库的查询表达式中缺少运算符
【发布时间】:2016-08-12 20:45:26
【问题描述】:

我收到一个错误:

查询表达式中的语法错误(缺少运算符)。

以下是被反对的 SQL:

我猜 Access 觉得它需要更多的括号。我试过在不同的地方添加它们,到目前为止没有运气。

【问题讨论】:

  • 您有三个WHERE 声明...您可以将其发布为文字而不是图片...?
  • 将第二个WHERE改为AND
  • 能打印出ssql的值吗?您还应该能够将该值粘贴到新查询的 SQL 视图中,这可以帮助您进行调试。

标签: sql ms-access


【解决方案1】:

去掉 from 后面的 (

      .....FROM ";
    sSQL += "[ComponentText] ..... 

而不是

    sSQL += "([ComponentText] ...

【讨论】:

    【解决方案2】:

    好吧,我不确定到底出了什么问题,但我确实修改了 SQL 并让它工作。使用 SELECT FROM (SELECT ) AS Q ... WHERE Component.Text IN (SELECT ) 涉及的修订。

    这是有效的 sSQL:

    SELECT Q.[ComponentCounter] FROM (SELECT [ComponentText].[ComponentCounter],[ComponentText].[TextId],[ComponentText].[Text] FROM [ComponentText] WHERE [ComponentText].[TextId] = @bomgroupid AND [ComponentText].[Text] = @bomdevice) AS Q INNER JOIN [Connection] as P ON Q.[ComponentCounter]=P.[CompCounter] WHERE Q.[ComponentCounter] IN (SELECT [ComponentText].[ComponentCounter] FROM [ComponentText] WHERE [ComponentText].[TextId] = 160040 AND [ComponentText].[Text]= @type );

    我没有使用别名的习惯,但它确实有助于简化这条 SQL 语句,对我自己和 MS Access 都是如此。我必须记住这一点。感谢大家的帮助。

    【讨论】:

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