Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access Access 2016代码正在插入重复记录_Ms Access - Fatal编程技术网

Ms access Access 2016代码正在插入重复记录

Ms access Access 2016代码正在插入重复记录,ms-access,Ms 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.Mo

我对在访问表单后面写代码是个新手。 我在“新建”按钮后面写了以下代码:

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
但是每一条记录都被双重保存,也就是说,我得到了两条相同的记录。
有人能在代码中找到问题吗?

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

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

如果仍要使用“保存”按钮(例如,如果要在保存后移动到新记录),则只需以下代码即可保存当前记录:

Me.Dirty = False
或者,您可以使用
DoCmd
语句:

DoCmd.RunCommand acCmdSaveRecord

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

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

如果仍要使用“保存”按钮(例如,如果要在保存后移动到新记录),则只需以下代码即可保存当前记录:

Me.Dirty = False
或者,您可以使用
DoCmd
语句:

DoCmd.RunCommand acCmdSaveRecord

比你埃里克·冯·阿斯茅斯还厉害。我还有很长的路要走,比你埃里克·冯·阿斯茅斯还远。我还有很长的路要走。