首页 > 解决方案 > Access 2016 代码正在插入重复记录

问题描述

我是在 Access 表单后面编写代码的新手。我在“新建”按钮后面写了以下代码:

Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim MyDate As Date

Set db = CurrentDb
Set rst = db.OpenRecordset("SELECT * FROM STOCK_IN ORDER BY RecNo;", dbOpenDynaset)
If rst.BOF And rst.EOF Then
Else
    rst.MoveLast
    MyDate = rst!TDate

End If

DoCmd.GoToRecord , , acNewRec

[TDate] = MyDate

Set rst = Nothing

AdFlag = True

以及“保存”按钮后面的以下代码:

    If AdFlag = True Then
    Dim db1 As DAO.Database
    Dim rst1 As DAO.Recordset
    Set db1 = CurrentDb
    Set rst1 = db1.OpenRecordset("SELECT * FROM STOCK_IN ORDER BY RecNo;", 
dbOpenDynaset)

    With rst1
        .AddNew
        ![TDate] = TDate
        ![IName] = IName
        ![StockIn] = StockIn
        .Update
        .Close
    End With

    Set rst1 = Nothing
    Me.Requery
    AdFlag = False

End If

但是每条记录都被双重保存,即,我得到了两条相同的记录。谁能在代码中找到我的问题?

标签: ms-access

解决方案


如果您使用的是绑定表单,则根本不需要保存按钮。当您关闭表单、重新查询等时,Access 会为您保存。

因为您也在手动保存,所以您保存了两次记录。

如果你无论如何都想有一个保存按钮(例如,如果你想在保存后移动到新记录),你只需要下面的代码来保存当前记录:

Me.Dirty = False

或者,您可以使用以下DoCmd语句:

DoCmd.RunCommand acCmdSaveRecord

推荐阅读