访问中的 SQL 更新语句的语法错误

Posted

技术标签:

【中文标题】访问中的 SQL 更新语句的语法错误【英文标题】:Syntax error for SQL update statement in access 【发布时间】:2016-06-30 13:57:04 【问题描述】:

我在 MS Access 中运行了一条 SQL UPDATE 语句,但收到一条错误消息

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

我在互联网上进行了搜索,但任何解决方案都适用于我的情况。

我的代码是:

Private Sub Command111_Click()
     CurrentDb.Execute " UPDATE test3 " & _
                       "SET OrderStatus= 'Producing' " & _
                       "WHERE OrderID='" & Me!cboOrderID1 & "' ProductName='" & Me!ComboProduct1 & "'"
End Sub

请帮我看看哪里错了。

谢谢

【问题讨论】:

很确定在你的两个条件之间应该有一个AND 【参考方案1】:

我假设 OrderID 是 int,所以它不能在 '' 引号中,并且必须是语句中的数字

"WHERE OrderID=" & Me!cboOrderID1 & " AND/OR ProductName='" & Me!ComboProduct1 & "'"

你也忘了使用 AND 或 OR

【讨论】:

【参考方案2】:

忘记你的 AND

 Private Sub Command111_Click()

    CurrentDb.Execute " UPDATE test3 " & _
    "SET OrderStatus= 'Producing' " & _
    "WHERE OrderID='" & Me!cboOrderID1 & "' AND ProductName='" & Me!ComboProduct1 & "'"
    End Sub

【讨论】:

非常感谢贾斯汀的快速回复。代码现在看起来不错,但我收到了错误输入错误。我所做的是根据表单输入更新表中的 OrderStatus。表中,OrderID 为字符串,ProductName 为数字查找引用,OrderStatus 为字符串。在表单中,OrderID 是源自表的组合框,表单中的 ProductName 是源自与表中的 ProductName 相同的源的组合框。如果我执行 append ,这些数据看起来不错,没有任何输入错误。你能帮我分析一下错误的来源吗? 您尝试过 cboOrderID1.Text 和 ComboProduct1.Value 吗?你确定 OrderID 是一个字符串吗?对我来说,OrderID 是一个数值,ProductName 是字符串是有意义的。如果是这种情况,您希望您的 WHERE 为:Where OrderID='" & cboOrderID1.value & "' AND ProductName='" & ComboProduct1.Text & "'"【参考方案3】:

谢谢你们!此代码适用于我的情况。

私有子命令111_Click()

CurrentDb.Execute " UPDATE test3 " & _
"SET OrderStatus= 'Producing' " & _
"WHERE OrderID='" & Me!cboOrderID1 & "' AND ProductName=" &CStr(Me!ComboProduct1) & ""
End Sub

在我的例子中,ProductName 来自一个组合框。

【讨论】:

以上是关于访问中的 SQL 更新语句的语法错误的主要内容,如果未能解决你的问题,请参考以下文章

SQLSTATE [42000]:语法错误或访问冲突:sql select 语句中的 1064

更新时更新语句中的语法错误

SQL 更新语句的语法错误

错误:您的 SQL 语法有错误 - 但 SQL 语句有效

在 sql 语法中出现错误,vb.net 中的 mysql update 语句

更新语句中的 VB.NET 语法错误