Вопрос по ms-access, access-vba, vba – Как отменить форму закрытия в Close Event?

9

Я уверен, что это очень просто, но я не могу его найти. В случае закрытия формы доступа, как я могу отменить закрытие формы? У меня есть тест, который считает записи в таблице. Если в этой таблице есть записи, я хочу спросить пользователя, хотят ли они закрыть или вернуться и работать с ними. Так как мне отменить закрытое событие?

Ваш Ответ

3   ответа
0

Form_BeforeUpdate (отменить как целое число) & quot; событие и установите отмену на True.

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

0

он работал для меня. Замените необходимые имена переменных выбранными вами именами. Вставьте код в событие form_unload вашей формы. ВНИМАНИЕ !!!: после выполнения этой операции вам будет сложно получить доступ к вашей форме в режиме дизайна и макета.

    Private Sub Form_Unload(Cancel As Integer)
        userresponse = MsgBox("Are you sure you want close? All your work wouldn't be saved", vbYesNo, "Database Information")
        Select Case userresponse
        Case 6
            Cancel = False
            'this line opens another form in my own case
            DoCmd.OpenForm "EngMenu"  

        Case 7
            Cancel = True
            'this line keeps my own form open in my own case
            DoCmd.OpenForm "UpdateForm"


        Case Else:

            MsgBox "You are not allowed to perform this operation", vbInformation, "Database Information"
        End Select
    End Subenter code here
12

GlobalVar ButtonClicked

Private Sub Form_Open(Cancel As Integer)
     ButtonClicked = False
End Sub

Private ClickMe_Click(Cancel As Integer)
     ButtonClicked = True
End Sub

Private Sub Form_Unload(Cancel As Integer)
     If Not ButtonClicked Then
         Cancel = True
     End if
End Sub  

Порядок событий для объектов базы данных

Истина равна -1 :)
Я не уверен, что понимаю, следует ли передавать что-либо событию Form_Unload в событии close? MAW74656
О, я вижу, поместите тест в Form_unload, затем установите Cancel = True.msdn.microsoft.com/en-us/library/aa211464%28v=office.11%29.aspx MAW74656
ЭтоCancel As Integer это действительно смутило меня. Я бы ожидал логическое значение там. Но я полагаю, VBA автоматически переводит TRUE и FALSE в 1 и 0? MAW74656
Я добавил гораздо больше заметок о том, как его использовать.

Похожие вопросы