通过以下代码更新我的访问表时遇到了一些问题:
Update = "UPDATE formation " & _
"SET AREA = '" & Me.AREA & "', " & _
"TYPE = '" & Me.TYPE & "', " & _
"TEAM = '" & Me.TEAM & "', " & _
"PRIORITY = '" & Me.PRIORITY & "', " & _
"PROCESS = '" & Me.PROCESSO & "', " & _
"NUMBER = " & Me.NumForm.Value & "', " & _
"SUPERVISOR = '" & Me.SUPERVISOR & "', " & _
"Cc = '" & Me.mailCc & "', " & _
"STATUS = 'SUBMITED', " & _
"USER_UPDATE = '" & newFormationUser & "', " & _
"DATA_STATUS_NOW = '" & Now() & "' " & _
"WHERE ID = " & Str(NewFormationID)
DoCmd.SetWarnings False
DoCmd.RunSQL Update
DoCmd.SetWarnings True
NumForm是一个数字1到15的ComboBox。 我已经尝试重做查询,重做代码,重制表,没有运气解决。 一遍又一遍地阅读以查找拼写错误甚至代码中的错误。
你能帮助我吗? 谢谢, 迪奥戈答案 0 :(得分:2)
该语句有许多问题,但它们都可以使用参数化来修复。
首先,错过了引用,每个人都看到了。
其次,您设置的列等于Now()
,但没有使用正确的日期格式,也没有使用日期分隔符(#
)。
第三,您使用撇号来分隔字符串,但不测试字符串本身是否包含撇号,从而引发不可预测且难以诊断的错误。
此外,Number
是一个关键字,应该用[]
括号括起来。
您应该使用参数化,然后大多数错误都不会发生:
Dim qd As DAO.QueryDef
Set qd = CurrentDb.CreateQueryDef("", "UPDATE formation " & _
"SET AREA = ?, " & _
"TYPE = ?, " & _
"TEAM = ?, " & _
"PRIORITY = ?, " & _
"PROCESS = ?, " & _
"[NUMBER] = ?, " & _
"SUPERVISOR = ?, " & _
"Cc = ?, " & _
"STATUS = 'SUBMITED', " & _
"USER_UPDATE = ?, " & _
"DATA_STATUS_NOW = ? " & _
"WHERE ID = ?")
qd.Parameters(0) = Me.AREA
qd.Parameters(1) = Me.TYPE
qd.Parameters(2) = Me.TEAM
qd.Parameters(3) = Me.PRIORITY
qd.Parameters(4) = Me.PROCESSO
qd.Parameters(5) = Me.NumForm.Value
qd.Parameters(6) = Me.SUPERVISOR
qd.Parameters(7) = Me.mailCc
qd.Parameters(8) = newFormationUser
qd.Parameters(9) = Now()
qd.Parameters(10) = NewFormationID
qd.Execute