Crear un registro en una tabla de seguimiento al realizar un cambio en un formulario de access

Tengo una base de datos hecha en Access 2007 que utilizo para realizar el seguimiento de los estudios que realizamos en una unidad de análisis.

Cada estudio pasa por unos estados descritos por un campo numérico (por ejemplo "1"; en espera, "2": en ejecución, "3": finalizado", "4": facturado,...)

Cuando el responsable del estudio cambia de fase, por ejemplo pasa de tenerlo en espera a iniciar la ejecución, modifica el estado (aquí de 1 a 2).

Desearía que estos cambios de estado permitan añadir, automáticamente, un registro a una tabla de seguimiento de forma que sea posible determinar cuantos días pasa un estudio en cada estado. La estructura de la tabla puede ser muy sencilla por ejemplo:

id_estudio, estado_anterior, estado_actual, fecha_cambio, [observaciones] 

He buscado ejemplos de como hacerlo pero no los he encontrado por lo que cualquier sugerencia será muy bien recibida

Respuesta
1

Puedes hacerlo de esta manera:

1º/ Crea una tabla (la llamaré TSeguimiento con los campos que indicas (id_estudio, estado_anterior, estado_actual, fecha_cambio)

2º/ En tu formulario, en el evento "después de actualizar" de tu campo "Estado", le generas este código (que tendrás que adaptar a los nombres que tu tengas):

Private Sub Estado_AfterUpdate()
Dim miSQL As String
'Suposición: sólo se registrarán los cambios a un estado superior.
If IsNull(Me.Estado.OldValue) Then
     miSQL = "INSERT INTO TSeguimiento(ID_estudio,Estado_actual,FCambio) VALUES (" & _
            Me.Id & "," & Me.Estado & ",#" & Date & "#)"
    CurrentDb.Execute miSQL
ElseIf Me.Estado.Value > Me.Estado.OldValue Then
    miSQL = "INSERT INTO TSeguimiento(ID_estudio,Estado_anterior,Estado_actual,FCambio) VALUES (" & _
            Me.Id & "," & Me.Estado.OldValue & "," & Me.Estado & ",#" & Date & "#)"
    CurrentDb.Execute miSQL
End If
End Sub

Y listo, cada vez que cambies el campo Estado en tu formulario si se cumple la premisa de que el estado anterior sea nulo o el nuevo estado sea mayor que el anterior, se te registrará en la tabla TSeguimiento.

Te dejo un ejemplillo para que lo veas en acción, a ver si es lo que querías.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas