Перехват автоматического сохранения в Microsoft Access - PullRequest
2 голосов
/ 23 августа 2011

У меня есть форма MS-Access с 3 уровнями вложенных форм. Вторая форма имеет два текстовых поля - имя и фамилия. По какой-то странной причине, как только пользователь начинает вводить имя, форма пытается вызвать сохранение.

Как я могу выяснить, кто / что / где запускается сохранение?

Я вставил обработчик Form_BeforeInsert и могу перехватывать там, но стек вызовов не указывает, откуда произошло событие.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 23 августа 2011

Когда вы переключаете фокус с элемента управления в родительской форме на элемент управления в подчиненной форме, этот переключатель фокуса вызывает сохранение текущей записи родительской формы, если какой-либо из его связанных элементов управления содержит несохраненные значения. Я не думаю, что есть какой-либо способ предотвратить или отложить это поведение. Вы должны либо разрешить сохранение записи, либо отменить изменения. Вы можете перехватить форму перед событием «Обновление», чтобы спросить пользователя, сохранять или отбрасывать, как предложено @woliveirajr. И вы можете сделать то же самое для события «Перед вставкой».

1 голос
/ 23 августа 2011

от http://help.lockergnome.com/office2/Disable-AutoSave-MS-Access--ftopict149090.html

Под "автосохранением" вы имеете в виду запись, которая сохраняется при изменении фокуса на другая запись? Если так, то нет встроенного способа «выключить его». Однако достаточно просто поместить некоторый код в событие BeforeUpdate формы:

If MsgBox("Do you want to save changes?", vbYesNo) = vbNo Then
Cancel = True
Me.Undo
End If 

И, возможно, вы не хотите спрашивать пользователя о его сохранении, поэтому строка Me.Undo сделает это.

...