Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-03-2009
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 21
ebeltete Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 17-03-2009
Avatar de gmontes
gmontes gmontes is offline
Miembro
 
Registrado: jul 2004
Ubicación: Culiacán, Sinaloa, México
Posts: 668
Poder: 20
gmontes Va por buen camino
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
__________________
Todos llevamos nuestros demonios a cuestas..
Responder Con Cita
  #3  
Antiguo 17-03-2009
hecospina hecospina is offline
Miembro
 
Registrado: oct 2007
Posts: 202
Poder: 17
hecospina Va por buen camino
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.
Código SQL [-]
insert into facturas (factura,numero,fecha,valor) select factura,numero,'03/17/2009',valor from facturas

o algo muy parecido con las condiciones que requieras
Suerte
Responder Con Cita
  #4  
Antiguo 17-03-2009
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 21
ebeltete Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 17-03-2009
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 21
ebeltete Va por buen camino
Entendido, pero la tabla tiene un primary key
Responder Con Cita
  #6  
Antiguo 17-03-2009
hecospina hecospina is offline
Miembro
 
Registrado: oct 2007
Posts: 202
Poder: 17
hecospina Va por buen camino
Hola
Entonces no puedes duplicar los registros, tendrias que insertarlos con otro numero

asi lo podrias hacer
Código SQL [-]
insert into facturas (factura,numero,fecha,valor) select factura,numero+50000,'03/17/2009',valor from facturas

de esta forma la factura de quedara con el numero mas 50000, por ejemplo la factura con numero 23456 quedaria con 73456

Suerte
Responder Con Cita
  #7  
Antiguo 18-03-2009
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 21
ebeltete Va por buen camino
Puedo hacer una variable?

insert into facturas (factura,numero,fecha,valor) select factura,:numeronuevo,valor from facturas
Responder Con Cita
  #8  
Antiguo 19-03-2009
hecospina hecospina is offline
Miembro
 
Registrado: oct 2007
Posts: 202
Poder: 17
hecospina Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Duplicar Registros Chris Firebird e Interbase 12 01-02-2008 21:35:30
Duplicar form Delar OOP 8 05-12-2006 00:25:34
Duplicar un Objeto Fita SQL 5 01-05-2005 15:14:33
Duplicar tabla k2k2k2 Firebird e Interbase 2 11-07-2004 07:02:20
para no dejar duplicar registros en InterBase Giniromero Firebird e Interbase 5 21-06-2003 02:05:03


La franja horaria es GMT +2. Ahora son las 15:45:37.


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
Copyright 1996-2007 Club Delphi