Como copiar campos de una tabla a otra con botón

Tengo dos tablas: tabla1 y tabla2. La tabla2 está vacía a espera de que en el formulario de tabla1 cree un botón que al pulsarlo copie determinados campos en la tabla2 por cada registro que esté visualizando en ese momento y que no me permita duplicar copias. Necesitaría el comando de botón que realiza esta operación. Los campos a copiar son de todo tipo (numérico, texto, meno, etc...)

1 respuesta

Respuesta
1
Te pongo un ejemplo, supondré que la tabla1 tiene un campo Id (numérico), un campo1, un campo2 y un campo3. Y la tabla2 tiene un campo Id(numérico) y un campos.
Si tienes cargado un registro en el formulario de la tabla1 y suponiendo que el control con el Id en el formulario se llama CTRId y que quieres copiar tanto el Id de la tabla1 a la tabla2 y el campo1 al campos, te quedaría así.
Dim BBDD As Database
Dim TABLA1 As RecordSet
Dim TABLA2 As RecordSet
Dim VId As Integer
VId=CTRId
Set BBDD=CurrentDb
Set TABLA1=BBDD.OpenRecordset (" SELECT * FROM tabla1 WHERW Id = " & VId )
If Not TABLA1.EOF Then
     Set TABLA2=BBDD.OpenRecorset ("tabla2")
     TABLA2.AddNew
     TABLA2!Id=TABLA1!Id
     TABLA2!campoA=TABLA1!campo1
     TABLA2.Update
     TABLA2.Close
End If
TABLA1. Close
BBDD. Close
No sé si esto es importante, pero al crear las dos tablas, eliminé los campos identificadores que se generan por defecto y creé uno en tabla1 autonumérico, aunque en esta misma tabla hay otro campo numérico que no permite repetir registros. Mi duda es sobre cuál sería en este caso el campo identificador y cómo crear el control del identificador CTRId.
Por lo demás, probaré a lo largo de esta mañana y te comentaré algo.
Para el código que te he colocado, el Id de la tabla1 que debes utilizar es el que no permite valores repetidos, así te aseguras que la consulta te arrojará sólo un dato concreto, que identifica sin equívoco el registro que quieres copiar.
Hola otra vez:
Debo estar haciendo algo mal porque al copiar el código y sustituir los nombres por los reales de mis tablas, el botón no hace nada.
Los pasos que he seguido son: en diseño de formulario he creado un botón en el que he generado evento y he metido el código que me has dado. Al volver a vista de formulario, pulso el botón y no responde.
¡Siento ser tan pesado! He dado los controles a los campos Id y al pulsar el botón se pone a compilar y da error " no se encontró en método o dato miembro" después del "If not", concretamente señala OpenRecordset "Tabla2".
No me funcionaba el botón porque no había eliminado la protección... Gracias.
Lo has escrito con los o sin paréntesis
OpenRecordset "Tabla2" ó OpenRecordset ("Tabla2")
Lo he escrito ("Tabla2"). Lo que no sé es si influye para algo es escribir con mayúsculas o minúsculas y que los nombres de los campos son bastante largos (todos en mayúsculas)
Ahhh!, Disculpa ya vi lo que pasó. Se escapó una letra
En lugar de Openrecorset es Openrecordset. Falta la de en el openrecorDset de la tabla2.
Lo he corregido y por otro error que me ha dado creo que había otro error en la linea FROM - WHERE. También lo he corregido y ahora no da errores, simplemente no funciona el botón a pesar de haber desbloqueado los contenidos de la bbdd.
¿Sabes colocar un punto de interrupción en el código y ejecutarlo paso a paso con el F8?
Así puedes ver exactamente como se ejecuta el código y que valor van tomando las variables. Inténtalo y me dices donde se detiene.
Se cómo colocar el punto, pero no dónde. Haciendo pruebas, lo he colocado al final y al ejecutar con F8 no hace nada.
El punto de interrupción se coloca entre el principio del código (después de las declaraciones de variables) y antes del lugar donde te da el error, es para que el código deje de ejecutarse y puedas ir línea a línea ejecutándolo tu con el F8, para ver que acciones hace cada línea y poder eveluar mejor donde puede haber un fallo de lógica en la secuencia del código.
Ya me contarás.
Si cierras la pregunta y no has resuelto la duda quedará a la vista de otros expertos que te puedan ayudar.
Disculpa la tardanza en responder por haber estado fuera. He probado con el punto de interrupción y el botón no hace nada. Mañana miraré con más detenimiento.
Muchas gracias por tu interés y saludos.
En cuanto te sea posible cierra esta pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas