2012-05-30 24 views
8

Estoy seguro de que esto es muy simple, pero no puedo encontrarlo. En el caso de cierre de un formulario de acceso, ¿cómo puedo cancelar el cierre del formulario? Tengo una prueba que cuenta los registros en una tabla. Si esa tabla tiene registros, quiero preguntarle al usuario si quiere cerrar o regresar y trabajar con ellos. Entonces, ¿cómo cancelo el evento cerrado?¿Cómo cancelar un formulario cerrar en Cerrar evento?

+4

¡No edite el problema para ser la respuesta! Esto es muy confuso para alguien que lee lo que te solucionó. Proporcionar el código defectuoso y el código correcto por separado es una solución. –

+0

Considero que los formularios enlazados a MS-Access son difíciles de controlar de manera problemática. ¡No estoy seguro de lo que pensaban los desarrolladores! – NoChance

Respuesta

11

Puede utilizar el 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

No estoy seguro de entender, ¿debo pasar algo al evento Form_Unload en el evento close? – MAW74656

+0

Oh, ya veo, pon la prueba en Form_unload y establece Cancel = True. http://msdn.microsoft.com/en-us/library/aa211464%28v=office.11%29.aspx – MAW74656

+1

He agregado muchas más notas sobre cómo usarlo. – Fionnuala

0

estudio y probar este código, que trabajó para mí. Reemplace los nombres de las variables necesarias con sus nombres elegidos. Pegue el código en el evento form_unload de su formulario. ATENCIÓN !!!: Después de realizar esta operación va a tener dificultades para acceder a su forma en el diseño y la disposición de vistas

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

uso del "Form_BeforeUpdate (cancelar como número entero)" evento y ajuste ELIMINAR en True.

Observe que simplemente no podrá cerrar en absoluto a menos que agregue alguna lógica para permitir la actualización de la base de datos.

Cuestiones relacionadas