ms-access - 保存记录后,从 Access Form UI 中清除条目,而不是 DB
问题描述
我将输入卷,等级和输入的数据,然后单击Save Record以将记录保存在数据库中。我希望该Clear按钮仅清除表单 UI 中的条目而不清除 DB 中的条目,因此我可以输入新记录,而不是关闭表单并再次打开它以创建新条目。
仅当UndoRecord
记录尚未保存在 DB 中时,宏才可在表单 UI 上使用。另外我不想删除记录,我只想在保存后从表单 UI 中清除条目。
解决方案
这是绑定表单的基本配方:
- 将表单的 DataEntry 属性设置为 true(例如在表单的属性表中)。
- 更改表单的 RecordSource 查询以在 WHERE 子句中包含始终为假的语句,例如类似
SELECT Data.* FROM Data WHERE (True = False);
- 在 [Save Record] 按钮单击事件处理程序中,包含类似于以下的代码:
Private Sub SaveRecord_Click()
On Error Resume Next
Me.Dirty = False 'Attempt to save the record
If Err.Number = 0 Then
Me.Requery 'Force the form to reload the query and reset the data entry form
Else
MsgBox Err.Description, vbCritical, "Error"
End If
End Sub
注意:错误的标准和设置DataEntry = True
实际上是多余的,因为其中一个或另一个应该足以使现有记录不显示在表格中。但是,某些组合键可以允许在显示最近添加的记录的同时导航表单。拥有这两种设置可确保仅添加新记录而不显示任何已保存的记录。
如果您只想使用清除按钮清除表单,让新添加的记录可供查看,则改为设置以下代码:
Private Sub SaveRecord_Click()
On Error Resume Next
Me.Dirty = False 'Attempt to save the record
If Err.Number = 0 Then
'Only enter a new record, leaving other newly-added record accessible
DoCmd.GoToRecord , , acNewRec
Else
MsgBox Err.Description, vbCritical, "Error"
End If
End Sub
Private Sub ClearForm_Click()
On Error Resume Next
Me.Dirty = False 'Attempt to save the record
If Err.Number = 0 Then
Me.Requery
Else
MsgBox Err.Description, vbCritical, "Error"
End If
End Sub
推荐阅读
- batch-file - 变量是净使用批次
- spring-mvc - 如何将 Thymeleaf th:field 与 java 8 LocalDate 绑定
- postgresql - 如何使用 PostgreSQL 和 TypeORM 进行查询)其中表具有 JSON 类型列
- c++ - `IDispatch::GetTypeInfo()` 接口是否正常?
- amazon-web-services - 每条路由有 1 个 Lambda 函数会更好吗?还是 1 个处理子路由的 Lambda?
- c# - 在分配给模型之前验证 {} 值
- python - pygal 在 x 轴上绘制日期
- pandas - 'record_path' 处的字典在 json_normalize 中没有变平
- php - 从 index.php 访问另一个文件
- jmeter - Jmeter - 如何在 POST 数据中排列值