首页 > 解决方案 > MS 访问 VBA 更新创建重复条目

问题描述

我将此代码绑定到 MSAccess 表单中的命令按钮。目的是向现有记录插入更新并将日期添加到 TIME OUT 字段。每当我运行此代码块时,它都会更新记录,但也会在同一个表中创建一个具有相同唯一 ID 的重复条目。所以它在桌面侧视图上看起来像这样。

在此处输入图像描述

它在表格上看起来像这样: 在此处输入图像描述

我试图理解为什么会发生这种情况。只是为了一些额外的信息。这是我的表结构: 在此处输入图像描述

Private Sub CheckOutBtn_Click()
    Dim rst As Recordset
    Dim employeeInt As Integer
    Dim strSQL As String
    employeeInt = Int(Me!EmployeeID)
    
    With CurrentDb.OpenRecordset("TimeTable")
    .Edit
    ![EmployeeID] = employeeInt
    ![TImeOut] = Now()
    .Update
    End With
    
    Me.Refresh

End Sub

任何帮助,将不胜感激!

标签: vbams-access

解决方案


您的代码有 3 个问题。首先,您将需要使用 TimeClockID 而不是 EmployeeID,并且您应该在表单数据源中包含 TimeClockID。

在此处输入图像描述

接下来在表单上包含一个链接到 TimeClockID 的不可见文本框,以便您可以使用 me 对象获取表单当前记录的 TimeClockID。
其次不要更改员工编号。我假设这是员工开始轮班时用于插入记录的表单中的剩余代码。更改员工编号可能会以某种方式创建重复记录。第三次使用 TimeClockID 更新正确的记录。

Private Sub CheckOutBtn_Click()

     Dim rst As Recordset
     Set rst = Me.Recordset.Clone
     With rst
        .FindFirst "TimeClockID = " & Me.txtTimeClockID 'subroutine to move rst to current form record.  
        .Edit
        ![TimeOut] = Now()
        .Update
        End With
    Me.Refresh
End Sub

现在添加 Timeout 不会创建重复记录:

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述


推荐阅读