OleDb 进入 Access 数据库的查询表达式中缺少运算符

Posted

技术标签:

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

我收到一个错误:

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

以下是被反对的 SQL:

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

【问题讨论】:

您有三个WHERE 声明...您可以将其发布为文字而不是图片...? 将第二个WHERE改为AND 能打印出ssql的值吗?您还应该能够将该值粘贴到新查询的 SQL 视图中,这可以帮助您进行调试。 【参考方案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 都是如此。我必须记住这一点。感谢大家的帮助。

【讨论】:

以上是关于OleDb 进入 Access 数据库的查询表达式中缺少运算符的主要内容,如果未能解决你的问题,请参考以下文章

条件表达式 Oledb Access 数据库中的数据类型不匹配

使用 Oledb 对象插入 ms-access 查询获取无效查询异常

使用 c# 和 oledb 查询更新 Ms-Access 2010 中的列值

C# Access OleDb 条件表达式中的数据类型不匹配

在 VB.NET 中使用 OleDb.NET 调用 Access 2010 存储选择查询的异常

使用 Decimal 参数的数据类型不匹配 - OleDb、C#、Access