Movimientos entre registros y guardar en otra tabla

¿Cómo están?
Soy nuevo en Access y quisiera saber si se pueden hacer estos dos puntos.

1-Necesito que al presionar un boton el registro Ej N° 1 los datos del mismo se guarden en otra tabla y luego quede vació para volver a llenarlo.
Tengo un formulario llamado Alta con los campos:
Codigo: 1
Nombre: Juan
Años: 42
fecha :  11/11/2010
Domicilio: XXXXX

2-Necesito mover o pasar los datos del registro 1 al registro 3 o mejor dicho del que este posicionado al que elija por medio de un inputbox los datos del registro luego de pasar se borren?

Codigo: 1
Nombre: Juan
Años: 42
fecha :  11/11/2010
domicilio: XXXXX

O que sugerencia me indicar para poder hacerlo.

1 respuesta

Respuesta
2

Sin tener muy claros los motivos/necesidades que te llevan a plantear este sistema, te comento:

Sistema 1:

1º/ El campo código no lo puedes tener definido en la tabla como autonumérico.

2º/ En el código de tu botón le pones:

Dim nuevoNum as Integer
Dim miNum as integer
miNum=Me.codigo
nuevoNum=InputBox("Pasar a registro: ")
'Aquí deberías validar el valor obtenido
...
'Borras el registro existente en ese número, por si existe y código es clave principal
CurrentDbExecute "DELETE * FROM TuTabla WHERE codigo=" & nuevoNum
'Pasas los datos (realmente actualizas el campo código):
CurrentDb.Execute "UPDATE TuTabla SET codigo=" & nuevoNum & " WHERE codigo=" & miNum
'Añades un nuevo registro en blanco sólo con el código que acabas de liberar:
CurrentDb.Execute "INSERT INTO TuTabla (codigo)  Values(" & miNum & ")"
'Actualizas el formulario
Me.Refresh

Sistema 2:

1º/ Si codigo es autonumérico

2º/ En tu botón iría este código:

Dim nuevoNum as Integer
Dim miNum as integer
Dim rst1 as DAO.Recordset
Dim rst2 as DAO.Recordset
miNum=Me.codigo
nuevoNum=InputBox("Pasar a registro: ")
'Aquí deberías validar el valor obtenido
...
Set rst1=CurrentDB.OpenRecordset("SELECT * FROM TuTabla WHERE codigo=" & miNum)
Set rst2=CurrentDB.OpenRecordset("SELECT * FROM TuTabla WHERE codigo=" & nuevoNum)
'Pasas los datos al nuevo codigo
If rst2.Recordcount=0 Then
rst2.AddNew
Else
rst2.Edit
End If
rst2("Nombre")=rst1("Nombre")
rst2("Años")=rst1("Años")
rst2("fecha")=rst1("fecha")
rst2("Domicilio")=rst1("Domicilio")
rst2.Update
rst2.Close
'Borras los del original
rst1("Nombre")=Empty
rst1("Años")=Empty
rst1("fecha")=Empty
rst1("Domicilio")=Empty
rst1.close

A ver si esto te da alguna idea. Saludos



G r a cias por responder Sveinbjorn.

Para explicarme mejor te envio los datos de mis tablas:

1/La Tabla Alta  esta compuesta:

Codigo: Numero
Nombre: Texto
Años: Numero
fecha :  Fecha/Hora
domicilio: Texto

2/La Tabla Destino  esta compuesta:

Codigo: Numero
Nombre: Texto
Años: Numero
fecha :  Fecha/Hora
domicilio: Texto

Esta bien?

-----------------------

En el Sistema 1:
Sveinbjorn:
1-'Aquí deberías validar el valor obtenido

...

yo:
a)Que código tendría que poner? / debería validar el valor obtenido?
b)/Si puedes aclararme cual es la Tabla destino o la que voy a pasar los datos.

seria esta?

CurrentDb.Execute "INSERT INTO TuTabla/Tabladestino? (codigo) Values(" & miNum & ")"

-------------------
Sistema 2:
Sveinbjorn:
1º/ Si código es autonumérico
yo:
No, Es la misma Tabla que el Sistema 1, no es Autonómico es Numérico el id igual al Sistema 1.
Sveinbjorn
2º/ En tu botón iría este código:
yo:
Que código debería ir en el botón si el id es numérico?

Gracias Sveinbjorn!

Si no me terminas de entender avisame!

En el sistema 1:

En las SQLs de DELETE... y UPDATE, TuTabla es la tabla de destino

En la SQL de INSERT INTO, TuTabla es tu tabla de alta

En ambos casos has de reemplazar TuTabla por tus nombres.

Para validar los datos, te remito al capítulo 3 del manual de Neckkito Nck, que puedes consultar aquí: http://siliconproject.com.ar/neckkito/index.php/manuales/curso-vba

En el sistema 2:

Que sea numérico o autonumérico no le influye en el código, te vale así tal cual, sólo has de tener en cuenta que en rst1 tutabla es alta y en rst2 es destino.

Lo que no acabo de entender es por qué te complicas con este sistema, si con una tabla es suficiente para registrar los datos...

Lo que no acabo de entender es por qué

G r a cias por ayudarme Sveinbjorn.

En realidad lo que necesito es tener 10 formularios con una sola tabla(parecido a este)y pasar datos entre ellos.

Poder ver por medio de un listbox cuales están desocupados y pasar información entre ellos y si están ocupados que no permita el paso de información para que no se sobrescriban .

Pero no tengo idea de como se hace.

Se me ocurrió que esta era la mas adecuada.

Si se se puede hacer de una manera mas simple hasmelo saber y abro una nueva consulta.

Espero tu contestación y luego cierro esta con puntaje Excelente.

Yo creo que sí hay mejores formas de hacerlo. Si abres una nueva pregunta, explica con detalle lo que tienes y lo que pretendes hacer, porque tal como lo explicas, no qyeda muy claro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas