根据输入日期更改AllowEdits属性

时间:2017-03-17 16:18:49

标签: vba access

我在Access 2016数据库中有多个拆分表单,这些表单经常被各种员工用于数据输入。用户能够查看旧记录但无法编辑它们非常重要。

但是,我想允许用户编辑那天发生的记录,以防他们在刚刚输入的记录中发现错误。

我目前的做法是将表单上的AllowEdits属性设置为yes,然后使用以下代码覆盖同一天的条目

Private Sub Form_Load()

If (Me![rec_date] < Now()) Then
Me.AllowEdits = False
Else: Me.AllowEdits = True

End If
End Sub

我认为If标准存在问题,因为目前所做的一切都是阻止编辑所有记录。

对于背景[rec_date]指的是输入记录的日期。

1 个答案:

答案 0 :(得分:1)

一些事情:

  1. 如果您正在处理记录更改,请使用“当前”事件。表单加载仅在表单本身打开时有效。如果您更改记录,它将不会为您做任何事。
  2. 不妨将Else语句移到下一行并正确缩进以提高可读性。
  3. 你的条件陈述与你告诉我的不完全一致。您尝试匹配特定日期,但使用日期时间(now())而不是日期。你也使用少于而不是等于。我建议使用equals和date函数(注意:不使用()并仅返回now()的日期部分。)
  4. 希望这有帮助!这是我建议的代码:

    Private Sub Form_Current()
        ' Only allow editing of records created today. 
        If (Me![rec_date] = Date) Then 
            Me.AllowEdits = True
        Else
            Me.AllowEdits = False
        End If
    End Sub
    

    Mat's Mug

    建议的更短的表格
    Private Sub Form_Current()
        Me.AllowEdits = Me![rec_date] = Date ' Only allow editing of records created today. 
    End Sub