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 de telemaco
1
1
telemaco, He trabajado 5 años desarrollando aplicaciones tanto en access...
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
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.