Copiar registros de un form a otro
Tengo un form (Orden) con 2 subformularios relacionados (Mano de obra) y (Recambios) y quisiera que al darle a un botón me copie los registros de los subforms (Mano de obra) y (Recambios) en otro form (Albarán) con 2 subforms con la misma estructura del form (Orden), creando un nuevo albarán al finalizar la orden.
Los 2 formularios (Orden) y (Albarán) son exactamente iguales. Tienen esta estructura
Gracias
1 respuesta

En principio no es difícil. Me ha parecido entender que quieres que te pase los datos del formulario Orden al formulario Albarán y los datos del subformulario Mano de obra al subformulario ¿Mano de obra? Del formulario Orden. Supongamos que el formulario Orden depende de la tabla Orden y el subformulario Mano de Obra depende de la tabla del mismo nombre y supongamos que formulario y subformulario están relacionados por Idorden. Y por último supongamos que el subformulario Mano de obra del formulario Albaran depende de la tabla Otra. En el evento Al hacer clic del botón puedes poner
docmd.setwarnings false
docmd.runsql"insert into Albaran select * from Orden where Idorden=" & me.idorden & ""
docmd.runsql"insert into Otra select * from [mano de obra] where idorden=" & me.idorden & ""
Esto último sería igual para Recambios.
De todas formas, si quieres, repito, si quieres, mándame un mensaje(sólo el mensaje) a [email protected] y te mando un ejemplo, que quizás se vea mejor. Si lo haces, en el asunto del mensaje pon tu alias A. sanc, ya que si no sé quien me escribe ni los abro.

Gracias Icue, lo que quiero es que al darle al botón cree un nuevo albarán copiando el idOrden del form orden al idOrden de Albarán y copie los mismo datos de los subform de Orden a los subform de Albarán

Supongamos que tengo una tabla Clientes relacionada con otra tabla Ventas por Idcliente. Asimismo tengo otra tabla Compradores y otra tabla Compras. Si con las primeras hago un formulario con subformulario
Y pulso el botón
y en la tabla Compras
Como dices que los campos se llaman igual, el código es simple

Si tengo una tabla Clientes y una tabla Ventas relacionadas por el campo Idcliente y las tablas Compradores y Compras( que por lo que decías los campos se llaman igual). Con las dos primeras hago un formulario con subformulario
Y pulso el botón
Y los datos del subformulario Ventas pasan a Compras
El código del botón es

El problema es que el subform manoobra del form albarán tengo que insertar el idalbaran de la tabla albaranes ademas de copiar todos los datos del subform ordenes manoobra.
En resumen, los subform son completamente iguales pero los de albarán necesitan llevar un idalbarán que se lo doy al crear un registro nuevo al aplicar el insert intro

Si en la tabla Albaranes no vas a insertar el idobra(aunque puedes hacerlo exactamente igual y además sería conveniente para saber a que obra corresponde ese albarán) tendrías que usar
Docmd. Runsql"insert into albaranes(nombrecliente, direccion, telefono, etc) values(nombrecliente, direccion, telefono, etc)"

Hola, el problema viene en la tabla albarán.manodeobra, porque no sé el procedimiento para que me copie todos los registros de la tabla orden.manoobra con el mismo NumOrden que he copiado en la tabla albarán
DoCmd.RunSQL "insert into [Albaranes] (IdVehículo, NumOrden) select [Órdenes].IdVehículo, NumOrden FROM [Órdenes] where NumOrden='" & Me.NumOrden & "'"
DoCmd.RunSQL "insert into [Albaranes - Mano de obra] (IdVehículo, NumOrden, IdAlbarán) select [Albaranes].IdVehículo, NumOrden, IdAlbarán FROM [Albaranes] where NumOrden='" & Me.NumOrden & "'"
Hasta aquí me funciona perfecto, pero no consigo añadir al insert into el código para que me copie los campos cantidad,descripción,... de la tabla orden.manodeobra a la tabla albaran.manodeobra
Perdona las molestias

Como sigo sin saber la construcción de las tablas, si tengo una tabla Ordenes
Que está relacionada con ManoObra
Por otro lado tengo la tabla Albaranes
Y su tabla relacionada Manoobra2
Con las dos primeras había hecho un formulario con subformulario
Si pulso el botón y abro el formulario Albaranes
El código del botón es
Aunque como decía, el campo IdAlbaran de la tabla Albaranes lo veo innecesario, ya que UN albarán es consecuencia de UNA Orden

Hola icue, la estructura es como la que has puesto tu, pero he puesto el código y solo me copia una línea entera de registro y yo quiero que me copie todos los registros referente a la orden activa

No sé como lo habrás puesto, porque en la imagen puedes ver como pasa todos los registros de ManoObra A ManoObra2, y el código que puse funciona perfectamente.

Te dejo una foto de la estructura
Lo que quiero es que al pulsar el boton el el form Orden me cree un IdAlbarán nuevo en la tabla Albaranes copiando el NumOrden y IdVehículo en la tabla Albaranes
A la vez insertar el IdAlbarán creado en la tabla Albaranes-Manodeobra y copiar los datos de la tabla T-OTMO
A la vez insertar el IdAlbarán de la tabla Albaranes y el IdDetalle de Albaranes-Manodeobra en la tabla Albaranes-Recambios y copiar los datos de la tabla T-OTRecambios
Perdona el follón, pero lo quiero así para poder crear un albarán sin hacer orden

Por partes. Te sobran un montón de campos. Si el campo NumOrden de la tabla Ordenes va a ser único, ¿para qué quieres el campo IdOrden? Si un albarán corresponde a una Orden, ¿para qué quieres un Idalbaran? ¿Si en la tabla Ordenes tienes un Idvehiculo, ¿Para qué quieres poner otra vez Idvehiculo en la tabla T-OT Mano? Y así hasta ...
Dicho esto, si tengo un formulario
Y pulso el botón, y abro el formulario Albaranes
El código del botón es
- Compartir respuesta
