Al hacer cambios en un formulario

Access guarda automáticamente los cambios que se le hagan a un registro, ¿cómo puedo condicionar para que le pregunte al usuario si desea guardar o no esos cambios a los registros al salir del formulario?

2 Respuestas

Respuesta
1
Te respondo también por aquí, porque dejaste esta pregunta abierta y no la cerraste y me enviaste otra.
Hola:
Entonces utiliza el evento unload de formulario, y coloca esta linea...
*************************
Private Sub Form_Unload(Cancel As Integer)
If MsgBox("¿desea guardar cambios?", vbInformation + vbYesNo, "Hola") = vbNo Then
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
End If
End Sub
***************************
Acá se invoca el método deshacer del menu... creo que trabaja bien desde acess 2000 en adelante...
Att:telemaco
Me funciono pero no en el evento Close lo puse en el evento antes de actualizar y funciono como yo quería muy agradecido
Si esto es un problema, pero se puede resolver de varias maneras.
1. Que en evento Close del formulario colocque este código:
****************************
If MsgBox("¿desea guardar cambios?", vbInformation + vbYesNo, "Salir") = vbNo Then
Me.Undo
End If
***************************
Todo estaría bien... pero si hay subformularios, hay estaría el problema, ademas siempre al cerrar el formulario le estaría preguntando... Que hago yo...
Cuando doy click en un botón de nuevo o modificar, lo que hago es basarme en tablas temporales (son las mismas originales, pero le antepongo la palabra tempo o la t no más) deben estar limpias, por eso siempre les hago un delete antes de pasarme...(deben tener la misma estructura de las tablas originales, con los mismos campos y mismo tipo de datos)... Ahora al dar click en estos botones, coloco el OrigenDelRegistro (RecordSource), en las tablas, así access va guardando en estas, y si necesito guardar de verdad, en un botón de guardar hago un insert en las tablas que necesito, mandando todo lo de las temporales (si es el de modificar ademas de pasar el origen del registro, debo insertar en la temporal el registro que modificara, ya que se supone que debe estar en el formualriopára modificarlo, cuando guarde, debo borrar el registro de la base de datos original, e INSERTO LOS NUEVOS DATOS)
Así cuando salgas del formulario NO HABRÁ PROBLEMAS, ya que todo quedara en la temporal y sino se actualiza se pierden los cambios.
Me avisas si te sirvió, o no te preocupes te sigo ayudando.
Att:telemaco
Respuesta
1
En las propiedades del formulario, en Eventos-Anters de actualizar, con el geenrador de código crea un procedimiento de evento y entre Private Sub y End Sub escribe, por ejemplo:
Dim respuesta As Byte
respuesta = MsgBox("¿Quiere guardar los datos", vbYesNo, "Aviso")
If respuesta = vbNo Then
DoCmd.CancelEvent
End If
Así, cuando hayas modificado algo y vayas a cerrar el formulario te preguntará lo anterior. Si le dices que no, te aparecerá una pantalla diciéndote que si cierras perderás los cambios. Le dices que sí, y te deja el registro como estaba.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas