【问题标题】:Run time error 3144 from UPDATE statement来自 UPDATE 语句的运行时错误 3144
【发布时间】:2018-06-01 02:06:03
【问题描述】:
CurrentDb.Execute "UPDATE Transaction SET receipt_id=" & txtreceipt_id & ", tdate=" & txttdate & ",total_cost=" & txttotal_cost & ",total_disc=" & txttotal_disc & " WHERE receipt_id=" & txtreceipt_id & " "

我收到运行时 3144 语法错误。似乎找不到错误。

【问题讨论】:

  • 你能显示完整的语法错误吗?
  • 您需要一些额外的报价吗?开始使用 CurrentDb.Execute "UPDATE Transaction SET receipt_id=" & txtreceipt_id 并将其他字段一一添加。

标签: sql ms-access vba ms-access-2010 ms-access-2013


【解决方案1】:

考虑使用 parameterized query 和 MS Access' QueryDefs 来准确指定绑定值的数据类型,并避免导致难以维护代码的串联和引号换行。在PARAMETERS 子句中根据需要调整以下类型(在 Access SQL 中兼容)。

SQL (只保存一次 MS Access 存储查询)

PARAMETERS [txtreceipt_id_PARAM] LONG, [txttdate_PARAM] DATE,
           [txttotal_cost_PARAM] DOUBLE, [txttotal_disc_PARAM] DOUBLE;
UPDATE [Transaction] 
SET receipt_id = [txtreceipt_id_PARAM], 
    tdate = [txttdate_PARAM],
    total_cost = [txttotal_cost_PARAM], 
    total_disc = [txttotal_disc_PARAM]
WHERE receipt_id = [txtreceipt_id_PARAM];

VBA (将值动态绑定到参数占位符)

Dim qdef as QueryDef

Set qdef = CurrentDb.QueryDefs("mySavedQuery")

qdef![txtreceipt_id_PARAM] = txtreceipt_id
qdef![txttdate_PARAM] = txttdate
qdef![txttotal_cost_PARAM] = txttotal_cost
qdef![txttotal_disc_PARAM] = txttotal_disc

qdef.Execute dbFailOnError

Set qdef = Nothing

【讨论】:

  • 非常感谢。不知道查询定义。
【解决方案2】:

所以看起来语法有点不对...它可能有助于将代码分成几部分...我无法测试这个解决方案,但试试这个(这完全取决于数据类型):

CurrentDb.Execute "UPDATE Transaction " & _
" SET receipt_id = '" & txtreceipt_id & "'" & _
", tdate = "  & txttdate & "" & _
", total_cost = " & txttotal_cost & "" & _
", total_disc = " & txttotal_disc & "" & _
" WHERE receipt_id = '" & txtreceipt_id & "'"

如果 txreceipt_id 是一个数字,那么试试:

CurrentDb.Execute "UPDATE Transaction " & _
" SET receipt_id = " & txtreceipt_id & "" & _
", tdate = " & txttdate & "" & _
", total_cost = " & txttotal_cost & "" & _
", total_disc = " & txttotal_disc & "" & _
" WHERE receipt_id = " & txtreceipt_id & ""

【讨论】:

  • 可能是txttdate,需要单引号。 & "" 也似乎毫无意义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 2021-05-23
  • 1970-01-01
  • 1970-01-01
  • 2020-10-26
  • 1970-01-01
相关资源
最近更新 更多