VBA 更新现有记录

问题描述 投票:0回答:3

我正在寻找设置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
ms-access vba
3个回答
3
投票

有两件事。 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

2
投票

您可能想将“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

0
投票

对所提供解决方案的评论:在代码中构造 SQL 表达式以在数据库中执行被认为是一种反模式。这是 SQL 注入利用的主要方式之一。

推荐的方法是使用记录集,并用它进行任何新记录、更新和删除。

© www.soinside.com 2019 - 2024. All rights reserved.