Borrar un registro y pasarlo a una tabla histórico

Estoy haciendo una base de datos, para una asociación en la que estoy, quisiera saber como podría dar de baja a un socio en el formulario y que este registro pase a una tabla de histórico. Esto en un botón el el formulario.

1 respuesta

Respuesta
1

La opción más sencilla que puedes implementar en tu BD, es añadir un campo de tipo Sí/No a tu tabla de socios (llamado, por ejemplo Baja). Si el campo está marcado significará que el socio está dado de baja, y si no está marcado, que sigue de alta.

Luego en tu formulario has de hacer estos pequeños ajustes:

1º/ Abres el formulario en vista diseño, y agregas el nuevo campo Baja. Sacas sus propiedades y le pones Visible en NO, para que quede oculto.

2º/ En las propiedades del formulario, pestaña Datos, le pones Filtrar al cargar en Sí, y en Filtro le pones: Baja<>Verdadero

De esta forma en tu formulario sólo aparecerán los socios que siguen de alta.

3º/ Para acabar, a tu botón le generas este código:

Private Sub ..._Click()
Me.Baja=True
End Sub

Si quisieras confirmar la baja, ponle este otro:

Private Sub ..._Click()
Dim resp as Integer
resp=MsgBox("Confirma que quieres dar de baja a este socio.",vbYesNo+vbInformation,"CONFIRMACION BAJA")
If resp=vbYes then Me.Baja=True
End Sub

Como te decía, esta opción es más sencilla (casi no hay que programar nada de código) y te evita tener dos tablas con los mismos datos.
Si no te sirve esta propuesta, te indico cómo hacerlo con las dos tablas.

Gracias por tu pronta respuesta, lo voy a hacer así, de todas maneras si no te importa y me explicas lo de las dos tablas así puedo aumentar mis pocos conocimientos.

Nuevamente Gracias.

Esta sería una posible forma de hacerlo:

Primeramente supongamos que tienes dos tablas (TSocios y TSociosHistorico), ambas con los mismos campos (por ejemplo y para simplificar: Nombre, FechaNac, Domicilio). Además, TSocios tendrá un campo ID(clave principal) que no se repetirá (puede ser un autonumérico), mientras que TSociosHistorico, tendrá ese mismo campo pero sin ser clave (ni autonumérico)

Supondré, además, que al darle de baja, el socio se borra de la tabla TSocios.

En tu botón has de programar este código:

Private Sub ..._Click()
Dim rst As DAO.Recordset
Set rst=CurrentDb.OpenRecordset("TSociosHistorico")
'Pasas los valores a la tabla Historico
rst.AddNew  'Creas un nuevo registro en la tabla
rst("ID")=Me.ID
rst("Nombre")=Me.Nombre
rst("FechaNac")=Me.FechaNac
rst("Domicilio")=Me.Domicilio
rst.Update  'Actualizas los datos de la tabla
'Cierras el recordset
rst.close
set rst=Nothing
'Borras el registro actual
DoCmd.RunCommand acCmdDeleteRecord
End Sub

Otra alternativa sería usar consultas SQL en vez de recordsets.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas