Pasar datos de una tabla a otra después de eliminar

Me gustaría preguntaros a ver si podéis indicarme como podría conseguir que en una base de datos cuando elimine una ficha usando un botón de comando de ELIMINAR REGISTRO una serie de datos básicos de ese registro como DNI, Nombre y Apellidos y alguno que otro más, pase a otra tabla tipo Histórico y permanezca ahí hasta que el usuario los elimine de ahí cuando quiera

En las 2 tablas y formularios tengo los mismos datos y con el mismo nombre, osea DNI, NombreYApellidos, Fecha de Alta,.. Etc etc. Una seria la tabla principal y la otra seria una tabla tipo Histórico como digo. Lo que necesitaría es que cuando le de a eliminar registro con el botón de comando en la Tabla Principal los datos coincidentes pasen o se copien a la tabla Histórico y permanezcan ahí, pero lógicamente no apareciendo ya para nada en la Tabla Principal, porque tengo varias consultas e informes relacionados con la tabla principal y necesito que esos registros históricos no se relacionen para nada

Yo lo tengo pensado usando una macro o código VB dentro del formulario principal con la opción AL CONFIRMAR ELIMINACIÓN

1

1 respuesta

Respuesta
1

En el botón que envías a eliminar los datos al recibir la respuesta de confirmar eliminar, creas un Insert a la tabla Histórico y allí te quedaran los datos tal cual de acuerdo al registro que vas a eliminar tomándolos del Formulario, y luego de esto realizas el DELETE de este registro.

Muchas gracias Ricardo

Entiendo un poco el proceso, pero podrías por favor darme un ejemplo de como debería ser ese Insert, usando los registros claves que tendría en mi base de datos como DNI y Nombre y Apellidos. es que no se como desarrollar ese Insert

Gracias de nuevo de antemano

Amigo serial algo así:

Insert Into Mitable(DNI,Nombre,Apellido) Values ('" & CampoDNI & "','" & CampoNombre & "', '" & CampoApellido & "')"

Esto debe ir luego que respondas al si de confirmar eliminar el registro y luego el DELETE.

Gracias de nuevo RIcardo

¿Entiendo qué en esa secuencia cuando pones "mitable" seria el nombre de mi tabla histórico no? ¿Y campoDNI y demás serian los nombres de mis registros coincidentes de la Tabla Principal?

¿Por otro lado de que forma más correcta lo puedo hacer para dejar este código en el botón de Eliminar entra la confirmación de borrado y el borrado definitivo?

Pasarme el Código de tu botón Eliminar a ver como lo tienes estructurado amigo.

El botón Eliminar no tiene nada incorporado de código aun ricardo, es un botón estándar de eliminar con una Macro incrustada de ELIMINAR REGISTRO en el Evento AL HACER CLIC, como te comento, no se el modo exacto de meterle ese INSERT dentro del mismo

Ok amigo aun no se que Base de Datos estas usando pero si estas usando una conexión este seria el código:

Private Sub CommandButton1_Click()
Dim respuesta As String

respuesta = MsgBox("ELIMINARA EL REGISTRO ACTUAL, DESEA CONTINUAR?", vbYesNo, "CONFIRMAR")
If respuesta = 6 Then
isql = "INSERT INTO HISTORIAL(DNI,NOMBRE,APELLIDO) VALUES"
isql = isql + "('" & CampoDNI & "','" & CampoNombre & "', '" & CampoApellido & "')"
MiConexion.Execute isql

isql = "Delete From TablaPrincipal Where DNI = '" & CampoDNI & "'"
MiConexion.Execute isql
MsgBox ("REGISTRO ACTUAL ELIMINADO"), vbInformation, "REGISTRO ELIMINADO"
Else
MsgBox ("REGISTRO ACTUAL NO ELIMINADO"), vbInformation, "CANCELAR ELIMINACION"
End If
End Sub

Hola Ricardo

Gracias por el codigo, recien lo estoy probando pero me da error,

La etiqueta inicial de "ELIMINARA EL REGISTRO ACTUAL,¿DESEA CONTINUAR?" aparece, le doy a confirmar y Access me devuelve el siguiente error:

"ERROR 424 EN TIEMPO DE EJECUCION, SE REQUIERE UN OBJETO", al darle a Depurar me muestra la linea de codigo MiConexion.Execute isql

Te comento mis 2 tablas son: TAB_USUARIOS y TAB_USUARIOS_HISTORICO y los campos que se llaman igual en las 2 tablas y que me gustaria que pasara de TAB_USUARIOS a TAB_USUARIOS_HISTORICO son los siguientes:  DNI; NombreyApellidos,Empleo,FechaIngreso y Antiguedad

Lo que he hecho para introducir el codigo que me has indicado es ir al boton de eliminar de mi base de datos, sacar sus Propiedades, ir a EVENTOS-AL HACER CLIC y seleccionar la opcion de GENERADOR DE CODIGO, he copiado tu codigo, modificando el nombre de mis 2 tablas y me ha saltado ese error

Ricardo modificando un poco tu código he conseguido el procedimiento principal de que me pase los registros de la TAB_USUARIOS a la TAB_USUARIOS_HISTORICO, el código correcto seria este:

Private Sub Imagen789_Click()
Dim respuesta As String
respuesta = MsgBox("ELIMINARA EL REGISTRO ACTUAL, DESEA CONTINUAR?", vbYesNo, "CONFIRMAR")
If respuesta = 6 Then
DoCmd.RunSQL "INSERT INTO TAB_USUARIOS_HISTORICO (DNI,NombreyApellidos,Empleo,Antiguedad) VALUES ('" & DNI.Value & "', '" & NombreyApellidos.Value & "', '" & Empleo.Value & "', '" & Antiguedad.Value & "')"
DoCmd.DeleteObject = "Delete From TAB_USUARIOS Where DNI = '" & DNI.Value & "'"
MsgBox ("REGISTRO ACTUAL ELIMINADO"), vbInformation, "REGISTRO ELIMINADO"
Else
MsgBox ("REGISTRO ACTUAL NO ELIMINADO"), vbInformation, "CANCELAR ELIMINACION"
End If
End Sub

El problema que tengo ahora es que la parte del codigo de BORRADO del REGISTRO (DoCmd.DeleteObject = "Delete From TAB_USUARIOS Where DNI = '" & DNI.Value & "'") de la TAB_USUARIOS no me funciona con la expresion que he puesto ni con la que me pusiste tu, ¿que sentencia seria la correcta para que me realice el borrado del registro??

¿No te funciona o te da un error?

No funciona, el codigo: DoCmd.DeleteObject = "Delete From TAB_USUARIOS Where DNI = '" & DNI.Value & "'" o el codigo: isql = "Delete From TablaPrincipal Where DNI = '" & CampoDNI & "'" no hacen la funcion que necesito de eliminado de los datos de la TAB_USUARIOS, directamente pasa a la etiqueta "REGISTRO ACTUAL ELIMINADO", pero al volver al Formulario o Tabla de Usuarios principal los registros siguen estando activos

Amigo pasarme el documento a este correo para revisarlo [email protected]

Ok gracias!

Ricardo encontré una sentencia que me permite eliminar el registro actual como quería. Esta Solucionado!

Muchísimas gracias por tu ayuda

Un saludo

Siempre a tu orden amigo, me alegra que tu problema este resuelto Saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas