需要在同一个Access表中创建一条记录的副本,然后更新数据

Posted

技术标签:

【中文标题】需要在同一个Access表中创建一条记录的副本,然后更新数据【英文标题】:Need to create a copy of an record in the same Access table and then update the data 【发布时间】:2020-04-21 11:59:53 【问题描述】:

我正在使用 access 2016 库存数据库,它不会超过 20000 条记录。 我使用管理库存所需的多选字段更新了库存表,并且在使用表格表单中的添加和更新宏添加新记录和更新现有记录方面一切正常。

现在我希望能够创建现有记录的副本,进行更新,然后将其保存到同一个库存表中,这样我就有了更新零件的历史数据,然后更新表格以仅显示最新的记录

我对访问和编码非常陌生,所以我确定我违反了某种建模规则,并尝试了以下方法以使其无法成功:

***在同一个表中创建更新记录 *创建追加查询但访问不支持多选择字段 *创建一个宏来复制和粘贴现有记录以更新并将新版本的记录粘贴到库存表中(似乎宏中不支持复制和粘贴) *创建一个创建现有记录副本的 VBA,我可以使用它来创建副本,但这仅在我对记录进行更新后才有效,这意味着我只剩下更新记录的两个副本,而不是原始记录和更新记录

*** 过滤表单以仅显示最新记录 *不知道从哪里开始!

【问题讨论】:

【参考方案1】:

这可能对你有用。它可能不是最优雅的解决方案,但它是我能想到的最好的解决方案。

您需要一个不同的主键 ID 字段,该字段不是库存表上的自动编号。 您可以使用您选择的任何方法(例如,表单上的按钮)将当前记录中的数据复制到 ID 字段大于 20000 的新记录中。

recid = DMax("ID", "tblInventory") + 1
If recid < 20001 then
    recid=20001
End if
mysql = "INSERT INTO tblInventory (recid, field2, etc.) VALUES (" & recid & ", '" & _
        txtField1.Value & "','" & txtField2.Value & "," & etc.
CurrentDB.Execute mySQL

然后用新数据编辑现有记录。

当您的表单加载有查询时,它仅基于查找低于 20000 的记录

您拥有可以单独查询的旧数据,以及您的表单中唯一可以看到的新数据。

【讨论】:

以上是关于需要在同一个Access表中创建一条记录的副本,然后更新数据的主要内容,如果未能解决你的问题,请参考以下文章

怎么在Access查询中创建一列从数字1开始递增的列・_・?

Microsoft Access 表单保存记录

MS Access 查询返回的记录不足,但仅限于某些约束

在 MS access passthru 中创建 sql server 临时表

如何将同一表中的一条记录与另一条记录关联?

怎么删除ACCESS中的重复记录 只保留一条