duplicar registros
Hola amigos del foro, trabajo con Firebird 2.0 y Delphi 5, estoy desarrollando un sistema de facturacion con maestro-detalle
Tengo una tabla maestro "facturas" y otra detalle "lineas". El tema es que quiero hacer una copia de una determinada cantidad de registros de la tabla facturas con el detalle correspondiente, cambiando solo el campo fecha, o sea quiero copiar todas las facturas de una determinada fecha y "duplicarlas" con un nueva fecha, no se si se entiende. Se me ocurre hacer un select y luego recorrer todos los renglones realizando un insert con los valores correspondientes, pero tal vez exista una forma mas "facilk" de hacerlo, gracias. |
en la web encontre esto, espero que te sirva:
Código SQL [-]INSERT INTO repres SELECT * FROM empleados WHERE titulo = 'rep ventas' Con la SELECT obtenemos las filas correspondientes a los empleados con título rep ventas,y las insertamos en la tabla repres. Como las tablas tienen la misma estructura no hace falta poner la lista de columnas y podemos emplear * en la lista de selección de la SELECT. Ejemplo: Supongamos ahora que la tabla repres tuviese las siguientes columnas numemp, oficinarep, nombrerep. En este caso no podríamos utilizar el asterisco, tendríamos que poner: Código SQL [-]INSERT INTO repres SELECT numemp, oficina, nombre FROM empleados WHERE titulo = 'rep ventas' O bien: Código SQL [-]INSERT INTO repres (numemp, oficinarep, nombrerep) SELECT numemp, oficina, nombre FROM empleados WHERE titulo = 'rep ventas' espero que algun ejemplo te sirva |
Hola
Si la tabla facturas tiene un primary key, que supongo que si, no te va a funcionar, de no ser asi el insert que te sugieren va a funcionar muy bien, solo que el es select cambias el campo fecha por el valor constante de la nueva fecha por el.
o algo muy parecido con las condiciones que requieras Suerte |
Tu ejemplo funciona pero no se como tendria que hacer parponer valores nuevos a algunos campos, por ejemplo copiar los registros con una nueva fecha
|
Entendido, pero la tabla tiene un primary key
|
Hola
Entonces no puedes duplicar los registros, tendrias que insertarlos con otro numero asi lo podrias hacer
de esta forma la factura de quedara con el numero mas 50000, por ejemplo la factura con numero 23456 quedaria con 73456 Suerte |
Puedo hacer una variable?
insert into facturas (factura,numero,fecha,valor) select factura,:numeronuevo,valor from facturas |
El parametro funcionaria si se va a insertar un solo registro, si se va a insertar mas de uno tendrias que pasar un valor nuevo para cada uno de ellos
|
La franja horaria es GMT +2. Ahora son las 19:04:28. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi