Duplicar registro access y sus registros relacionados

Quisiera poder duplicar un registro y sus registros relacionados por medio de un botón en un formulario.

EJ:

Tabla Pedidos: ID autonumérico - Cliente - Proveedor

Tabla Detalle de pedidos: Id autonumérico - Producto - Precio

Quisiera poder desde el formulario que contiene el subformulario con el detalle. Poder duplicar el pedido completo y que aparezca un nuevo pedido exactamente igual tanto el pedido como el detalle. Con el obvio cambio de los id autonuméricos.

2 respuestas

Respuesta
1

Don Anonimo: Justo lo que quieres lo tienes de dos formas distintas en >>

http://www.mvp-access.es/emilio/Access/Descargas.asp 

Una con Set And Carry en el Ejemplo 81 del 10/12

¿Quieres repetir los datos de todos o algunos de los campos del registro anterior al insertar uno nuevo?, en dBase se hacía con Set Carry On, esta es mi propuesta al respecto.
Revisado para simplificar el proceso utilizando acCmdDuplicate.

Otra en el Número 104 del 12/07  >> Este creo que se ajusta perfecto a lo que quieres.

¿Cómo duplicar un registro y sus correspondientes líneas de detalle? Aquí un sencillo ejemplo

Mis saludos >> Jacinto

Ciertamente Icue lleva razón pero en la cabecera de la página que te he enviado está la BD Neptuno y dado que hay muchos o la mayoría de ejemplos ligados a esa BD creo que en cualquier caso te servirá de ayuda. Saludos >> Jacinto

Respuesta
1

Como probablemente no tengas la Neptuno, esos ejemplos no te sirven, en el botón puedes poner

Docmd. Runcommand accmdsaverecord

DoCmd.RunSQL "Insert into pedidos select cliente,proveedor from pedidos where id=forms!nombredelformulario!id"

docmd.runsl"insert into [Detalle de pedidos] select producto, pecio from [detalle de pedido]where id=forms!nombredel formulario!id"

Si no quieres que aparezca la dichosa ventanita de "Va a anexar...

arriba de todo ese código pon Docmd.setwarnings false

Hola!

Casi que funciona pero sucede lo siguiente.

Copia bien la info de ambas tablas, lo único que no la relaciona, Porque en la segunda tabla No completa el campo "Id de pedido" (Que relaciona el detalle de pedido con el pedido). 

Como puedo hacer para que en la tabla detalle de pedido complete el campo de pedido con el número que va a tener el nuevo pedido que estoy copiando, asi se relaciona.

Desde ya gracias!

Por otro lado,

Yo quiero copiar todos los campos exactos! De ambas tablas, y son muchos campos, como 30, no puedo evitar de nombrar campo por campo?

Vamos por partes, desde el momento que ambos Id son autonumericos no puedes hacer nada. Supón que partes de cero. Al insertar en la tabla Pedidos un pedido, o sea un cliente, este pedido puede tener tres productos distintos, por tanto la tabla Pedidos tendría un Id=1, pero la tabla Detalle de pedido tendría id=1 Id=2 Id=3.

Lo normal, por eso me sorprendió, es que la relación entre las tablas sea UNO a Varios, o sea, UN pedido VARIOS Productos. Por tanto el Id de la tabla Pedidos debe ser Autonumérico y el Id de la tabla Detalle de Pedidos numérico y con una relación 1 a Varios. Ver imagen

Así, en el momento que inserte datos en la tabla Pedidos, automáticamente le asigna a Detalle de pedidos el Id de lo que se ha insertado.

De todas formas, si quieres, mándame un mensaje a [email protected] y te mando un par de ejemplos. Si lo haces, en el Asunto del mensaje pon tu alias Anónimo Access, porque sino no los abro, y mucho menos siendo anónimo.

Si son muchos campos, tampoco es problema si el formulario desde donde vas a insertar los datos tiene origen en otra tabla, bastaría con decirle

docmd.runsql"inserto into pedidos select * from tablaorigendelformulario where....

Todo depende de como tengas construido el formulario.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas