Вот базовый рецепт для формы bound :
- Установите для свойства DataEntry формы значение true (например, в листе свойств формы).
- Измените запрос формы 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