Очистить запись из пользовательского интерфейса формы доступа, но не из БД, после сохранения записи - PullRequest
0 голосов
/ 13 марта 2019

enter image description here

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

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

1 Ответ

1 голос
/ 14 марта 2019

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

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

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