Очистить запись из пользовательского интерфейса формы доступа, но не из базы данных, после сохранения записи

#ms-access #ms-access-forms

#ms-access #ms-access-forms

Вопрос:

введите описание изображения здесь

Я введу список, оценку и данные, введенные пользователем, и нажму Save Record, чтобы сохранить запись в базе данных. Я хочу, чтобы Clear кнопка очищала запись только в пользовательском интерфейсе формы, а не в базе данных, чтобы я мог ввести новую запись вместо закрытия формы и повторного открытия ее для создания новой записи.

UndoRecord Макрос работает в пользовательском интерфейсе формы, только если запись не была сохранена в базе данных. Также я не хочу удалять запись, я просто хочу очистить запись из пользовательского интерфейса формы после ее сохранения.

Комментарии:

1. Ваша форма привязана или не привязана?

2. Если форма ПРИВЯЗАНА, просто перейдите к новой строке записи. Если форма не ПРИВЯЗАНА, то установите для текстовых полей значение Null. Отредактируйте вопрос, чтобы опубликовать попытку кода. Возможно, потребуется использовать поле со списком для ввода «данных, введенных».

Ответ №1:

Вот базовый рецепт для связанной формы:

  1. Установите для свойства DataEntry формы значение true (например, в таблице свойств формы).
  2. Измените запрос RecordSource формы, чтобы он содержал оператор always-false в предложении WHERE, например, что-то вроде

 SELECT Data.* FROM Data WHERE (True = False);
  
  1. В обработчике события нажатия кнопки [Сохранить запись] включите код, аналогичный следующему:

 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
  

Комментарии:

1. Как вы можете видеть, я проигнорировал любой UndoRecord макрос. Я не уверен, какое это имеет отношение к желаемому решению, поскольку, если бы я понял остальную часть вопроса, это никогда не было бы полезно, поскольку это просто подразумевает его название… это отменит ввод новой записи и предотвратит ее сохранение.