MS Access VBA - 语法错误,截断更新sql语句
问题描述:
我在数据表视图中有一个子表单,其记录源是一个临时表。所以每当用户在表单上插入新的事务时,她都会将新记录插入到临时表中。子窗体被设置为使用户不必为事务输入日期,这意味着子窗体中的数据表不显示日期字段。日期通过主窗体中的文本框插入。MS Access VBA - 语法错误,截断更新sql语句
每当记录插入我使用子窗体的更新后子和SQL UPDATE语句来插入日期临时表。但是我得到一个语法错误。这是我使用的代码:
Dim db As Database
Dim currentID As Integer
Dim transactionDate As Date
Dim strSQL As String
Private Sub Form_AfterUpdate()
Set db = CurrentDb
currentID = Me!txtID
transactionDate = Me.Parent!txtDate
strSQL = "UPDATE tblTempTable " _
& "SET transactionDate = " & transactionDate _
& " WHERE ID = " & currentID & ";"
Debug.Print (strSQL)
db.Execute strSQL
End Sub
正如你可以看到我priting SQL语句执行权前,它打印:UPDATE tblTempTable SET transactionDate = 17.10.2016 WHERE ID = 55;
但我发现了一个sytnax错误:Syntax error in number in query expression '17.10.201'
。当我使用& "SET transactionDate = #" & transactionDate & "#" _
的话题标签中的日期时,我也收到语法错误:Syntax error in date in query expression '#17.10.2016'
。同时Debug.Print输出:UPDATE tblTempTable SET transactionDate = #17.10.2016# WHERE ID = 56;
所以看起来声明的结尾被截断,但我不明白为什么。有人能帮助我吗?
答
尝试在ISO格式提供日期:
UPDATE tblTempTable SET transactionDate = #2016-10-17# WHERE ID = 55;
答
如果今天的日期,使用日期:
strSQL = "UPDATE tblTempTable " & _
"SET transactionDate = Date() " & _
"WHERE ID = " & currentID & ";"
或使用格式:
strSQL = "UPDATE tblTempTable " & _
"SET transactionDate = #" & Format(transactionDate, "yyyy\/mm\/dd") & "# " & _
"WHERE ID = " & currentID & ";"
谢谢,奇迹般有效! – flouwer