首页 > 解决方案 > 保存记录后,从 Access Form UI 中清除条目,而不是 DB

问题描述

在此处输入图像描述

我将输入卷,等级和输入的数据,然后单击Save Record以将记录保存在数据库中。我希望该Clear按钮仅清除表单 UI 中的条目而不清除 DB 中的条目,因此我可以输入新记录,而不是关闭表单并再次打开它以创建新条目。

仅当UndoRecord记录尚未保存在 DB 中时,宏才可在表单 UI 上使用。另外我不想删除记录,我只想在保存后从表单 UI 中清除条目。

标签: ms-accessms-access-forms

解决方案


这是绑定表单的基本配方:

  1. 将表单的 DataEntry 属性设置为 true(例如在表单的属性表中)。
  2. 更改表单的 RecordSource 查询以在 WHERE 子句中包含始终为假的语句,例如类似

SELECT Data.* FROM Data WHERE (True = False);
  1. 在 [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

推荐阅读