首页 > 解决方案 > SQL中的UPDATE语句一半工作一半不做任何事情

问题描述

所以我一辈子都无法弄清楚我到底做错了什么。我想到了很多词。但是现在我已经完成了一半的UPDATE工作,但无法让其余的工作。

DoCmd.SetWarnings True

If Me.butCompleteFlight.Value = True Then
    SQL = "UPDATE tblFlightRecords SET strLand = values('" & Me.strStopTime & "') WHERE strWorkingRecord = TRUE"
    SQL = "UPDATE tblFlightRecords SET strWorkingRecord = FALSE WHERE strWorkingRecord = TRUE"
    DoCmd.RunSQL SQL

End If

DoCmd.SetWarnings True

strWorkingRecord 从切换TRUEFALSE作品。我遇到的问题是 strLand 没有填充,我使用了与INSERT数据库不同部分中使用的 sql 相同的语法,但无法找出我在这个问题上搞砸了什么。

谢谢

标签: sqlvbams-access

解决方案


SQL是一个字符串,您一个接一个地为其分配 2 个值。当您执行DoCmd.RunSQL SQL时,它包含您分配给它的最后一个值。
分别执行每条语句:

SQL = "UPDATE tblFlightRecords SET strLand = '" & Me.strStopTime & "' WHERE strWorkingRecord = TRUE"
DoCmd.RunSQL SQL
SQL = "UPDATE tblFlightRecords SET strWorkingRecord = FALSE WHERE strWorkingRecord = TRUE"
DoCmd.RunSQL SQL

或者您可以在 1 个语句中执行此操作,如下所示:

SQL = "UPDATE tblFlightRecords SET strLand = '" & Me.strStopTime & "', strWorkingRecord = FALSE WHERE strWorkingRecord = TRUE"
DoCmd.RunSQL SQL

语句中的VALUES子句UPDATE也是错误的。您只能在INSERT语句中使用它。


推荐阅读