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 条件表达式中的数据类型不匹配