2012-05-30 17 views
8

Sono sicuro che è molto semplice, ma non riesco a trovarlo. Nell'evento di chiusura di un modulo di accesso, come posso annullare la chiusura del modulo? Ho un test che conta i record in una tabella. Se quella tabella ha dei record, voglio chiedere all'utente se vuole chiudere o tornare indietro e lavorare con loro. Quindi, come posso cancellare l'evento close?Come cancellare un modulo chiudi in Chiudi evento?

+4

Non modificare il problema per essere la risposta! Questo è molto confuso per qualcuno che legge cosa ha risolto per te. Fornire il codice difettoso e il codice corretto separatamente è una soluzione. –

+0

Ritengo che i moduli associati a MS-Access siano difficili da controllare in modo problematico. Non sono sicuro di cosa stessero pensando gli sviluppatori! – NoChance

risposta

11

È possibile utilizzare l'evento Unload:

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 

Order of events for database objects

+0

Non sono sicuro di aver capito, dovrei passare qualcosa all'evento Form_Unload nell'evento close? – MAW74656

+0

Oh, capisco, metto il test in Form_unload quindi imposta Cancel = True. http://msdn.microsoft.com/en-us/library/aa211464%28v=office.11%29.aspx – MAW74656

+1

Ho aggiunto molte più note su come usarlo. – Fionnuala

0

Studio e provare questo codice, ha funzionato per me. Sostituisci i nomi delle variabili necessarie con i nomi scelti. Incolla il codice nell'evento form_unload del modulo. ATTENZIONE !!!: Dopo aver eseguito questa operazione si trovano difficoltà ad accedere al tuo modulo in design e il layout vista

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 
1

Usare la "Form_BeforeUpdate (annulla come intero)" evento e di impostare annullare su True.

Si noti che non sarà possibile chiudere affatto a meno che non si aggiunga qualche logica per consentire effettivamente l'aggiornamento del database.