Ms access 使用上一个条目计算MS Access vba

Ms access 使用上一个条目计算MS Access vba,ms-access,vba,Ms Access,Vba,我需要确保我的用户进入的停机时间不会超过他们可用的时间。为此,我计算了他们的可用时间,并在表单中创建了一个running total列来显示他们当前的停机分钟数(他们每次输入一个停机原因和“停机分钟数”) 现在,我正试图编写一个VBA代码来检查可用时间和运行总停机时间。除第一个条目外,其他条目都有效。如果用户输入的数字高于第一次输入时的可用时间,则允许输入。我认为这是因为我使用了“更新后”,但我尝试了其他事件,结果没有改变 以下是我当前的VBA代码: Private Sub Form_After

我需要确保我的用户进入的停机时间不会超过他们可用的时间。为此,我计算了他们的可用时间,并在表单中创建了一个running total列来显示他们当前的停机分钟数(他们每次输入一个停机原因和“停机分钟数”)

现在,我正试图编写一个VBA代码来检查可用时间和运行总停机时间。除第一个条目外,其他条目都有效。如果用户输入的数字高于第一次输入时的可用时间,则允许输入。我认为这是因为我使用了“更新后”,但我尝试了其他事件,结果没有改变

以下是我当前的VBA代码:

Private Sub Form_AfterUpdate()
    If Me.RunTime.Value < Me.DTSum Then
        MsgBox ("You have too much downtime")
        DoCmd.RunCommand acCmdDeleteRecord
        DoCmd.RunCommand acCmdRecordsGoToPrevious 
    Else
        MsgBox ("Okay")
    End If
End Sub
Private子表单_AfterUpdate()
如果Me.RunTime.Value
考虑使用触发器事件(通常是用于数据验证的事件),在输入后和保存前警告用户,然后相应地取消事件。对于新事件,使用触发器事件

使用这种方法,您可以避免删除操作,并采取主动的姿态,而不是被动的姿态

Private Sub Form_BeforeUpdate(Cancel As Integer)
    If Me.RunTime.Value < Me.DTSum Then
        MsgBox ("You have too much downtime")
        Cancel = True
        Me!RunTime.Undo
    Else
        MsgBox ("Okay")
    End If
End Sub

Private Sub Form_BeforeInsert(Cancel As Integer)
    If Me.RunTime.Value < Me.DTSum Then
        MsgBox ("You have too much downtime")
        Cancel = True
        Me!RunTime.Undo
    Else
        MsgBox ("Okay")
    End If
End Sub
Private子表单\u更新前(取消为整数)
如果Me.RunTime.Value
或使用干燥er溶液的功能:

Private Sub Form_BeforeUpdate(Cancel As Integer)
    Cancel = CheckRunTime
    Me!RunTime.Undo
End Sub

Private Sub Form_BeforeInsert(Cancel As Integer)
    Cancel = CheckRunTime
    Me!RunTime.Undo
End Sub

Function CheckRunTime As Integer
    Dim Cancel As Integer

    If Me.RunTime.Value < Me.DTSum Then
        MsgBox ("You have too much downtime")
        Cancel = True
    Else
        MsgBox ("Okay")
        Cancel = False
    End If

    CheckRunTime = Cancel
End Sub
Private子表单\u更新前(取消为整数)
取消=检查运行时
我运行时。撤消
端接头
插入前的专用子表单(取消为整数)
取消=检查运行时
我运行时。撤消
端接头
函数CheckRunTime为整数
将取消设置为整数
如果Me.RunTime.Value