Insertar un registro de una tabla a otra y eliminarlo mediante código

Cree una tabla que se llama abonos y cancelados la cual tiene varios datos entre ellos una casilla de verificación (si/no) que brinda el sistema al momento de crear los campos.

Bueno lo que quisiera seria que después de que este el registro ingresado con el tiempo necesitaría quitarlo para que ya no haga parte de la suma de abonos y cancelados y así me de valores reales, ¿entonces quisiera que al momento de darle en la casilla de verificación el registro lo envíe a otra tabla y se elimine de la tabla activa eso es posible?

1 Respuesta

Respuesta
2

Hernán: Para trasladar a una segunda Tabla, puedes hacerlo con una Consulta de Datos anexados, poniéndole el identificador del Registro.

Mira éste enlace que te ayudará, aparte de Insertar, actualizar y eliminar.

https://msdn.microsoft.com/es-es/vba/access-vba/articles/insert-update-and-delete-records-from-a-table-using-access-sql 

Para Borrarlo simplemente puedes hacerlo con

DoCmd. RunCommand acCmdDeleteRecord

O si quieres usar una SQL>>

Dim StrSQL As String

StrSQL = "DELETE * FROM NombreTabla WHERE Identificador = " & Me.Identificador
CurrentDb.Execute StrSQL, dbFailOnError

Si el Identificador fuera Texto has de poner>> ...........Identificador = '" & Me.Identificador & "'"

Un saludo >> Jacinto

¡Gracias! Jacinto 

El enlace ya lo había visto pero no ebtvendí cono hacerlo pero voy ha probar con lo que me dijiste. Y gracias has sido como mi tuTour en este camino de aprender a programar muchas gracias Jacinto que Dios te bendiga mucho tu ayuda 

Jacinto me sirvió pero el problema es que manda todos los registros y solo quiero que mande el registro del registro al cual le marco la casilla de verificación mira este es el código

Private Sub Salido_Click()
DoCmd.OpenQuery "anexar_ACS", acViewNormal, acEdit
DoCmd.RunCommand acCmdDeleteRecord
End Sub

que ouedo hacer 

Hernán: Ignoro la SQL que habrá dentro de "Anexar_ACS", pero si te inserta más de 1 Registro es que no le tendrás puesta la Condición WHERE haciendo referencia al Registro actual, con un identificador único.

Al no saber tu estructura de datos se me hace muy dificil sugerirte algo más. Tal vez si me completas toda la informaciónpueda intentar orientarte.

Nombres de Campos de la Tabla(s), Nombres de los controles del Formulario y si es continuo o no, etc. Un saludo >> Jacinto

Hola jacinto que pena responder hasta ahora pero es que hoy tuve el tiempo mira la tabla se llama cancelados y la tabla a insertar se llama cancelados salidos los campos que tienen las dos son iguales entonces te las escribo en orden:

ID_Registro

Nombre

Idfactura

Total

Cancelado

Salido

Como te dije salido es para que al darle a la casilla de verificación de salido pues envíe el registro a cancelados salidos y borre el de cancelados bueno ice una consulta anexar que se llama anexar_acs el formulario esta echo en tabular para que los registros se vean todos entonces es formularios continuos.

Gracias jacinto si necesitas algo más me avisas y gracias por tu ayuda

Hernán: Prueba con ésto y si hay algún nombre que sea distinto a los que te pongo, lo cambias

Private Sub Salido_AfterUpdate()
Dim StrSQL As String
StrSQL = "INSERT INTO [Cancelados Salidos] (Nombre, IdFactura, Total, Cancelado, Salido) "
StrSQL = StrSQL & "SELECT Nombre, IdFactura, Total, Cancelado, Salido FROM Cancelados WHERE ID_Registro=" & Me.ID_Registro
CurrentDb.Execute StrSQL, dbFailOnError

StrSQL = ""
StrSQL = "DELETE FROM Cancelados WHERE ID_Registro=" & Me.ID_Registro

CurrentDb.Execute StrSQL, dbFailOnError

StrSQL = ""
Me.Requery
End Sub

Estoy suponiendo que ID_Registro es numérico, porque si fuera Texto, deberías sustituirlo por >>

....ID_Registro = '" & Me.ID_Registro & "'"

Lo de poner la StrSQL = "", no es necesario. Es una manía personal. Un saludo >> Jacinto

hola Jacinto gracias pero me sale un error en el código mira 

Private Sub Salido_Click()
Dim StrSQL As String
StrSQL = "INSERT INTO [Abonos_y_cancelados_Salidos] (Nombre, N°_Recibo, Valor, Abono, Cancelado, Salido, Observaciones) "
StrSQL = StrSQL & "SELECT Nombre, N°_Recibo, Valor, Abono, Cancelado, Salido, Observaciones FROM [Abonos y Cancelados] WHERE ID_Registro=" & Me.ID_Registro
CurrentDb.Execute StrSQL, dbFailOnError
StrSQL = "DELETE FROM [Abonos y Cancelados] WHERE ID_Registro=" & Me.ID_Registro
CurrentDb.Execute StrSQL, dbFailOnError
Me.Requery
End Sub

hay esta el código con los cambios que hice de los campos pero me sale un error que dice pocos parámetros se esperaba 1. 

sabes que puede ser?

Hernán: En cual de las dos Consultas te sale ese error, en la primera o la segunda.

Un saludo >> Jacinto

Mira en esta

Private Sub Salido_Click()
Dim StrSQL As String
StrSQL = "INSERT INTO [Abonos_y_cancelados_Salidos] (Nombre, N°_Recibo, Valor, Abono, Cancelado, Salido, Observaciones) "
StrSQL = StrSQL & "SELECT Nombre, N°_Recibo, Valor, Abono, Cancelado, Salido, Observaciones FROM [Abonos y Cancelados] WHERE ID_Registro=" & Me.ID_Registro
CurrentDb.Execute StrSQL, dbFailOnError
StrSQL = "DELETE FROM [Abonos y Cancelados] WHERE ID_Registro=" & Me.ID_Registro
CurrentDb.Execute StrSQL, dbFailOnError
Me.Requery
End Sub

Mira me sale en esta línea que deje en negrilla es que no me carga la imagen para que la vieras

Hernán: Ignoro si tendrán algo que ver los Nombres de los Campos y del Control ID_Registro, que realmente se llame así. Te lo comento, porque esas consultas, las tengo funcionando en alguna Aplicación mía. Los Nombre de de objetos es conveniente (no imprescindible), que no tengan espacios ni caracteres especiales, ni acentos. Prueba encerrando [Nº_Recibo] entre corchetes, tal como te lo escribo. Si sigue sin funcionarte te prepararía un ejemplo simple, pero será el fin de semana. Tu me cuentas. Un saludo >> Jacinto

¡Gracias! Jacinto me funciono cambiar el campo n°recibo por nrecibo y cuando lo cambie hay si funciono muchísimas gracias por tu ayuda me funciono y me sirvió mucho gracias de nuevo

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas