我正在寻找设置VBA,如果新记录当前不存在(相同的ID#),则将其添加到表中,然后更新现有记录的所有列(相同的ID#)。我能够设置插入语句,但出现更新错误。
下面的代码表明我有一个
查询表达式“[update].[date] from [update]”中存在语法错误(缺少运算符)。
您提供的任何帮助都会非常有帮助。
Function Update()
Dim dbs As Database
Set dbs = CurrentDb
dbs.Execute "Update historic_archive Set historic_archive.DATE = [update].[DATE] FROM [update], historic_archive WHERE [update].[id] = historic_archive.id;"
End Function
有两件事。 1. 请阅读有关 SQL 更新命令的更多信息。 2. 切勿使用类似于日期、更新等函数的名称。阅读有关命名约定的更多信息。
'Below update command will update historic date with update table.date where both id's are same.
Function Update()
Dim dbs As Database
Set dbs = CurrentDb
dbs.Execute "UPDATE historic_archive inner join [UPDATE] ON [update].[id] = historic_archive.id " & _
"SET historic_archive.[DATE] = [update].[DATE];"
End Function
您可能想将“WHERE”更改为“ON”
Function Update()
Dim dbs As Database
Set dbs = CurrentDb
dbs.Execute "UPDATE historic_archive " _
& "SET historic_archive.DATE = [update].[DATE] " _
& "FROM [update] " _
& "JOIN historic_archive ON [update].[id] = historic_archive.id;"
End Function
对所提供解决方案的评论:在代码中构造 SQL 表达式以在数据库中执行被认为是一种反模式。这是 SQL 注入利用的主要方式之一。
推荐的方法是使用记录集,并用它进行任何新记录、更新和删除。