Foros del Web » Soporte técnico » Ofimática »

ACCESS - No quiero que guarde

Estas en el tema de ACCESS - No quiero que guarde en el foro de Ofimática en Foros del Web. Hola amigos!!! tengo un formulario que su origen de control es una consulta de dos tablas y quiero que cuando modifique algun campo no me ...
  #1 (permalink)  
Antiguo 06/07/2009, 05:20
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
ACCESS - No quiero que guarde

Hola amigos!!!

tengo un formulario que su origen de control es una consulta de dos tablas y quiero que cuando modifique algun campo no me machaque ese registro, sino que me añada otro, para temas de historiales.

Que puedo hacer para esto?


Gracias!!!
  #2 (permalink)  
Antiguo 06/07/2009, 08:59
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: ACCESS - No quiero que guarde

Puedes comprobar si se ha producido alguna modificacion en el form, y en caso afirmativo, crear un nuevo registro con todos los datos presentes en ese momento en cada uno de los controles del form, y una vez guardado, cancelar la modificacion (me.undo).

Mira este ejemplo:

ControlModificaciones


En la opcion 3, en el evnto before_update del formulario tienes esto:

Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim Respuesta As Integer

'If Me.Dirty Then
Respuesta = MsgBox("El registro ha sido modificado" & vbCrLf & vbCrLf & _
"¿Deseas guardar los cambios?", vbQuestion + vbYesNo, "DATOS MODIFICADOS")
If Respuesta = vbNo Then
Me.Undo 'No relizo los cambios
Else
'Realizo los cambios
If Nz(NomTecnicoModificacion, "") = "" Then
NomTecnicoModificacion = CurrentUser
End If

Me!SubFormUltimaModificacion.Form!NomTecnico = NomTecnicoModificacion
Me!SubFormUltimaModificacion.Form!FechaModificacio n = Date
Me!SubFormUltimaModificacion.Form!HoraModificacion = Time

currentdb.execute "Insert into ......."
me.undo

End If
'End If
End Sub

Seria cuestion de añadir lo que te he puesto en rojo, adaptado a tusa campos y controles.

Un saludo
  #3 (permalink)  
Antiguo 06/07/2009, 10:00
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: ACCESS - No quiero que guarde

Lo probaré a ver si me sirve,


Gracias!
  #4 (permalink)  
Antiguo 07/07/2009, 01:37
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: ACCESS - No quiero que guarde

Hola Taribo007!!

Me ha servido tu codigo, pero ahora tengo un pequeño problema:
Y es que tengo dos botones, guardar y cerrar.
El boton guardar guardo y cierro el form
El boton cerrar pregunto siempre si esta seguro de perder los cambios?
si me dice que si, cierro el form asi
Código:
        DoCmd.Close , , acSaveNo
sino no hago nada.

Al crear el evento beforeUpdate tanto si clico en guardar como en cerrar, después me salta siempre dicho evento.
Cómo puedo hacer para que no me pase esto?

He pensado que, tanto el evento de guardar como el de cerrar me llamen al beforeUpdate y este determine si tiene cambios o no.


Que opinas?

Gracias!
  #5 (permalink)  
Antiguo 07/07/2009, 01:57
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: ACCESS - No quiero que guarde

Prueba con esto, declaras una variable de tipo boolean en el modulo del formulario:

Option Compare Database
Option Explicit
'Juasto aqui, debajo de estas sentencias que tendras (al menos 1) arriba del todo del codigo del form.
Public CerrarDirecto As Boolean

En el boton que tienes para cerrar, le das a la variable el valor true

CerrarDirecto = True
DoCmd.Close acForm, Me.Name, acSaveNo

Y en el evento before update, haces que se ejecute el codigo solo si la variable esta en false:

Private Sub Form_BeforeUpdate(Cancel As Integer)
If CerrarDirecto = False Then
'tu codigo
...................
...................
End If
End Sub

Prueba a ver si con esto es suficiente

un saludo
  #6 (permalink)  
Antiguo 07/07/2009, 02:26
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: ACCESS - No quiero que guarde

de momento estoy jugando con el me.dirty y me va yendo bien.

Gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:20.