2016-05-10 2 views
0

У меня есть подформа внутри формы. По умолчанию, когда я изменяю запись в подчиненной форме, запись автоматически сохраняется, когда я выхожу за пределы подформы. Я добавил кнопку в основной форме, которая вручную сохраняет записи в форме и подформате, поэтому я отменил сохранение на выходе подформы, чтобы избежать конфликтов записи.Отменить изменения в подформе в Access 2013

Private Sub Form_BeforeUpdate(Cancel As Integer) 
    Me.Undo 
    Cancel = True 
End Sub 

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

Как отменить автоматическое сохранение в подчиненной форме при сохранении каких-либо изменений до выхода из основной формы?

ответ

4
Me.Undo 

отменяет любые изменения данных в (под) форме. Просто удалите эту строку.

Это:

Cancel = True 

достаточно, чтобы отменить обновление.

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

Для предотвращения этого у вас есть два варианта.

1.) Либо вы используете несвязанную форму, которая не связана с каким-либо источником записей. Вам необходимо прочитать данные с помощью набора запросов/записей, записать его в элементы формы и позже записать любые измененные значения в базу данных с помощью VBA. - Это не будет работать с формами непрерывных/табличных данных

2.) Или вы создаете временную таблицу с той же структурой, что и основная таблица, и привяжите ее к этой временной таблице. Когда ваша (основная) форма открывается, вы копируете все соответствующие записи для подформы в таблицу temp. Если основная форма закрыта/вышла, вы обновляете реальную таблицу данных с любыми изменениями из таблицы temp.

+1

Существует третий вариант: вы можете обернуть все события данных, которые происходят в форме в транзакции, и явно совершить (или откат) транзакцию, основанную на событиях в форме. –

+1

Четвертый вариант: привязать форму к отключенному набору записей. Это позволяет вам создавать непрерывные формы и поддерживать незафиксированные значения в нескольких записях и явно писать или отклонять их. Отключенные наборы записей требуют, чтобы вы использовали ADO, и, хотя они являются удивительными, когда вы привыкаете к ним, у вас есть немного кривой обучения. –

Смежные вопросы