MS 访问:SQL 语句"UPDATE"给出模糊的错误 3144 "Syntax error in UPDATE statement"



>我目前正在运行一个链接到表的窗体,其中窗体中显示的控件之一依赖于另一个控件。具体来说,它是一个名为">机器挖掘"的字段,它必须是用户在"手工挖掘"字段中输入的百分比的剩余百分比。这些字段与从另一个控件(格式为">挖掘类型")中选择的特定记录相关。例如,如果我在手工挖掘中输入 30%,那么机器挖掘需要为 70%。我创建了一个代码,该代码将在 VBA 中使用 RunSQL 方法,在手动挖掘控件中执行 AfterUpdate 事件时将其存储在基础表中:

Private Sub Text_HandExcvPerc_AfterUpdate()
DoCmd.RunSQL ("UPDATE tbl-ExcavationType SET [Machine Excavation] = 1 - [Hand Excavation] WHERE [Excavation Type] = Text_ExcvType.Value;") End Sub

tbl-ExcavationType是链接到窗体的表,Text_ExcvType.Value是包含当前记录标识符的文本框控件。有人可以评论我的DoCmd.RunSQL的语法吗?我不断收到错误。

您有几个问题:

  1. 您需要将表名括在括号中,因为它包含一个-
  2. 您需要将文本值括在单引号 (') 或双引号 ("中。
  3. 您需要将Text_ExcvType.Value的值而不是字符串"Text_ExcvType.Value"添加到查询中。

我已经测试了以下工作:

Private Sub Text_HandExcvPerc_AfterUpdate()
DoCmd.RunSQL "UPDATE [tbl-ExcavationType] SET [Machine Excavation] = 1 - [Hand Excavation] WHERE [Excavation Type] = '" & Text_ExcvType.Value "';"
End Sub
DoCmd.RunSQL ("UPDATE [tbl-ExcavationType] SET [Machine Excavation] = " & _
"1 - [Hand Excavation] WHERE [Excavation Type] = """ & Text_ExcvType.Value & """;")

请注意,文本框值周围有三个引号。Access 对字符串使用双引号而不是单引号。由于是在字符串中输入的,因此必须使用两个双引号来指示字符串的单双引号,然后使用另一个双引号来断开字符串以连接您的值。系统看到的将是有效的:

UPDATE [tbl-ExcavationType] SET [Machine Excavation] = 1 - [Hand Excavation] WHERE [Excavation Type] = "My Data Value";

你在这里看到的似乎是一个计算字段:即[机器挖掘]总是1 - [手工挖掘]所以我不明白你为什么需要存储它。也就是说,您需要将单词"Text_ExcvType.Value"替换为名为 Text_ExcvType 的控件中的实际值,并且当它在语音标记内时无法执行此操作。尝试

dim strsql as string
strsql = "UPDATE tbl-ExcavationType SET [Machine Excavation] = "
strsql = strsql & "1 - [Hand Excavation] WHERE [Excavation Type] = '"
strsql = strsql & Text_ExcvType.Value & "';" 
DoCmd.RunSQL strsql

这允许访问首先计算 Text_ExcvType.Value,将结果放入字符串中,然后执行 sql 这样做还可以让你在调试中观察字符串构建,以找出哪里出了问题。

最新更新