ms-access - 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
但是每条记录都被双重保存,即,我得到了两条相同的记录。谁能在代码中找到我的问题?
解决方案
如果您使用的是绑定表单,则根本不需要保存按钮。当您关闭表单、重新查询等时,Access 会为您保存。
因为您也在手动保存,所以您保存了两次记录。
如果你无论如何都想有一个保存按钮(例如,如果你想在保存后移动到新记录),你只需要下面的代码来保存当前记录:
Me.Dirty = False
或者,您可以使用以下DoCmd
语句:
DoCmd.RunCommand acCmdSaveRecord
推荐阅读
- c++ - 这个警告“指向算术中使用的函数的指针”是什么意思?
- arrays - 为什么链表叫链表 为什么不链表?
- php - 使用 PHP MVC 框架,未填充从 db 到选择框的选定值
- c - 如何将我的输出从 10.000 更改为 10
- python - Backtrader 给出 IndexError:数组分配索引超出范围
- java - 为什么我需要 Servlet 的映射或注释,而不是 JSP?
- python - 需要帮助在 python 输出后添加文本
- sql - 在 SQL 中使用 Json auto 进入打开的 Json
- php - 如何将 HTML 登录页面连接到 myphpadmin 并根据数据库上的凭据将两个帐户定向到 2 个单独的登录页面
- python - 用python矩阵的特征向量和特征值