vba - 根据 ID 锁定 Access 数据库中的先前记录
问题描述
我正在尝试构建一个代码,其中某种形式的先前记录被锁定以进行编辑。这将允许用户创建和编辑新表单,但不能更改以前表单的数据。我希望能够允许用户访问和编辑前 5 个表单,但锁定之前所有表单中的数据。
我已经尝试了几件事,但作为一个新手 VBA 用户,没有任何效果。我试过了:
Private Sub Form_Load()
If Me.ID < 22 Then
Me.AllowEdits = False
Else
Me.AllowEdits = True
End If
End Sub
我使用了一个虚拟的“22”来查看代码是否可以工作,但它最终锁定了所有记录,而不仅仅是数字 1-21,就像我试图做的那样。
我希望“22”成为最近记录中 ID 字段的值。我也希望它是:如果 Me.ID <(最新记录的 ID)-5
这可能吗?
解决方案
Form_Load
是错误事件,因为仅在启动时Me.ID
作为第一条记录引发一次。您必须使用Form_Current
事件检查当前选定的记录。
不要依赖ID
连续(例如由删除引起)。选择前 5 个 ID(降序排列)并获得最小值。
创建为已保存的查询(例如,将其命名为 FormNameTop5ID,其中 FormName 是表单的名称,TableName 是绑定到表单的表/查询)
SELECT TOP 5 ID FROM TableName ORDER BY ID DESC
在表单中创建一个Form_Current
事件
Private Sub Form_Current()
If Me.ID.Value < DMin("ID", "FormNameTop5ID") Then
Me.AllowEdits = False
Else
Me.AllowEdits = True
End If
End Sub
推荐阅读
- json - 如何使用 jq 从 json 字符串中提取字段
- javascript - readline 请求输入时出现问题(可能是由于 console.log)
- javascript - 在没有协议的情况下询问 URL 有什么问题吗?
- python - 在将 XML 元素附加到更大的 XML 文件之前,有什么方法可以美化它吗?
- eclipse - Eclipse - Tomcat VM 参数不变
- excel - 在另一个工作表中恢复 Excel 工作表的一列记录的数据
- sql - SQL中的查询问题
- combobox - Vaadin 8 Combobox 如何选择拳头项目
- reactjs - React - 将数据传递给 this.props.children 不起作用
- java - OCR 预处理:删除与字符交叉的行