Error 2448 al cerrar formulario sin guardar

Me sale el error que muestro en la captura siguiente al cerrar un formulario vacío.

Si lo depuro me marca esa linea de código, pero estaba pensado en antes de cerrarlo que escriba un dato cualquiera en el campo Usuario, pero creo que lo estoy escribiendo mal porque no me funciona.

Private Sub Form_Close()
Form.Refresh
Dim respuesta As Integer
respuesta = MsgBox("¿Quieres guardar el registro?", vbYesNo, "Guardar registro")
If respuesta = vbNo Then
Me.Usuario.value = "A"
DoCmd.RunCommand acCmdUndo
End If
End Sub

Si el formulario tiene cualquier cosa escrita en cualquier apartado si me funciona por eso pensé en que escriba cualquier letra porque total no lo Guarda en la base de datos.

Si se os ocurre cualquier otra solución me vendría de perlas.

1 respuesta

Respuesta
1

Honestamente, no entiendo la pregunta, si el formulario está vacío(se supone que no hay nada en sus controles)¿Para qué preguntarle si quiere guardarlo? ¿Para qué "refrescarlo"?

Por otro lado, puedes ponerlo como

MsgBox "Quiere guardar el registro", vbYesNo, "Adios"
If vbNo Then
Exit Sub
End If

Si pudieras concretar algo más.

Pues te digo, el formulario me guarda automáticamente los datos al cerrar el formulario sin presionar el botón de guardado entonces por eso hago esto. 

Te pongo un ejemplo por si no quedo claro:

Usuario: Icue

Apellidos: González

Si por cualquier cosa veo que esos datos no son correctos y cierro por error el formulario o le doy a nuevo, automáticamente ya queda guardados los datos en la base de datos.

Entonces con el código que puse:

Private Sub Form_Close()
Form.Refresh
Dim respuesta As Integer
respuesta = MsgBox("¿Quieres guardar el registro?", vbYesNo, "Guardar registro")
If respuesta = vbNo Then
DoCmd.RunCommand acCmdUndo
End If
End Sub

no pasa eso porque le digo que " No Guardar" y no me lo guarda. Pero esta el problema de que si abro un formulario nuevo, y no se... no quería hacer eso y le doy a cerrar el formulario me tira el error que indique arriba porque el formulario esta vacío.

Entonces la solución seria que automáticamente,  mismamente el campo de "Usuario" escriba una letra por ejemplo "A" para que el formulario no este vacío y pueda cerrarse al darle a " No guardar" sin guardar esa "A" del campo Usuario.

Espero que se entienda ahora. 

Un saludo y gracias por la respuesta.

En el encabezado de la pregunta pones

Me sale el error que muestro en la captura siguiente al cerrar un formulario vacío.

Un formulario vació es esto

Si en el caso que citas, te guarda algo, es de suponer que el cuadro de texto Usuario tiene origen de control ya que si fuera independiente no guardaría nada. Lo que haría sería poner un botón de comando Cerrar y en su evento al hacer clic poner

DoCmd.SetWarnings False
DoCmd. DoMenuItem acFormBar, acEditMenu, 8,, acMenuVer70
DoCmd. DoMenuItem acFormBar, acEditMenu, 6,, acMenuVer70

Docmd. Close

Lo que hace es eliminar el registro actual y cerrar el formulario.

O bien, ya que "llena" los controles Usuario y Apellidos pero los demás no poner en el evento Al cerrar

docmd.setwarnings false

docmd.runsql"delete * from tabla origen del formulario where fechanacimiento is null  or fechanacimiento="""""

Por si el valor de ese control no se hubiera puesto, o si se hubiera puesto, se hubiera borrado.

Perdona estaba de vacaciones y no pude probarlo hasta hoy, funcionó correctamente esto era justo lo que necesitaba. Un saludo y muchas gracias.

La pregunta no admite más respuestas

Más respuestas relacionadas