Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-08-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 13
DOS Va por buen camino
Question copiar una tabla a otra

Hola a todos, resulta que tengo dos tablas iguales en sus campos, en una cargo los datos y estos los guardo en la otra tabla luego vacio la primera, cargo nuevamente datos y se los agrego para guardarlos en la segunda y borrar nuevamente la primera, seria algo asi:
Tabla1
A - B - C - D
1 - 2 - 2 - 4

Tabla2
A - B -C - D

Paso los datos de la primera a la segunda y esta la borro

Tabla1
A - B - C - D

Tabla2
A - B - C - D
1 - 2 - 2 - 4

Cargo nuevos datos en la primera
Tabla1
A - B - C - D
5 - 5 - 3 - 3

Tabla2
A - B - C - D
1 - 2 - 2 - 4
los paso a la segunda y borro la primera
Tabla1
A - B - C - D

Tabla2
A - B - C - D
1 - 2 - 2 - 4
5 - 5 - 3 - 3
y asi sucesivamente, la idea es hacerlo con el siguiente codigo
Código SQL [-]
Insert Into Tabla2
Select * From Tabla1
Perdonen que pregunte sin probarlo pero estoy en mi trabajo y para ganar tiempo lo pregunto, Lo estoy realizando en Delphi7, voy a poner un Query y la codificacion seria en el boton guardar.
Mas en limpio seria algo como esto en el boton Guardar:
Código Delphi [-]
 with Query1 do   begin     Close;     SQL.Clear;     SQL.Add('INSERT INTO Tabla2');     SQL.Add('SELECT * FROM Tabla1');     Open;   end;
Funcionaria? no me va a borrar los registros anteriores? Gracias.
Responder Con Cita
  #2  
Antiguo 02-08-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Usas insert y select, para borrar es delete. Si no usas delete entonces no se borran.
Responder Con Cita
  #3  
Antiguo 02-08-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 13
DOS Va por buen camino
Casimiro, la codificacion que puse es la que seria del boton Guardar, aunque le faltaria algo mas. La del boton Borrar, aunque podria ser en un boton que diga Nuevo, asi borra la tabla para poder cargarla y con la codificacion anterior en el boton Guardar, pasa los datos de una tabla y se lo agrega a la otra:
Boton Nuevo(borra el registro anterior y permite una nueva carga)
Código Delphi [-]
if table.Open then
 table.First;
 while not table.Eof do
 begin    
    Table.delete;    
    Table:next;   
end;
Gracias

Última edición por Casimiro Notevi fecha: 02-08-2013 a las 18:26:32.
Responder Con Cita
  #4  
Antiguo 02-08-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No entiendo bien lo que dices ¿un botón 'nuevo' que borra?
Un botón 'Nuevo' debe servir para eso, para 'Nuevo'. Y un botón 'Borrar' debe servir para borrar. No confundas al usuario.

Por cierto, no sé qué BD, componentes, etc. estás usando, pero en principio en tu código sobra el table.next
Si estás posicionado en un registro y lo borras, entonces pasas a estar posicionado en el siguiente. Si haces un .next te lo saltas e iría "al siguiente del siguiente". Estarías borrando uno sí y uno no, uno sí y uno no...

¿Y el libro que te aconsejé?, parece que no has tenido tiempo de leerlo
Responder Con Cita
  #5  
Antiguo 02-08-2013
Avatar de ozsWizzard
ozsWizzard ozsWizzard is offline
Miembro
 
Registrado: may 2004
Ubicación: Murcia
Posts: 190
Poder: 20
ozsWizzard Va por buen camino
Funcionar, funcionaría si cambias Open por ExecSQL y, como dice Casimiro, te falta borrar en tabla 1.

Si lo que quieres es que esté todo en el mismo botón, hazlo en el mismo botón y después del insert borras

Código Delphi [-]
with Query1 do   
begin     
   Close;     
   SQL.Clear;     
   SQL.Add('INSERT INTO Tabla2');     
   SQL.Add('SELECT * FROM Tabla1');     
   ExecSQL;   

   Close;     
   SQL.Clear;     
   SQL.Add('DELETE Tabla1');     
   ExecSQL;  
end;
__________________
La Madurez se llama...
~~~Gaia~~~

Última edición por ozsWizzard fecha: 02-08-2013 a las 19:17:06. Razón: Corregir errata
Responder Con Cita
  #6  
Antiguo 02-08-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 13
DOS Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
No entiendo bien lo que dices ¿un botón 'nuevo' que borra?
Un botón 'Nuevo' debe servir para eso, para 'Nuevo'. Y un botón 'Borrar' debe servir para borrar. No confundas al usuario.

Por cierto, no sé qué BD, componentes, etc. estás usando, pero en principio en tu código sobra el table.next
Si estás posicionado en un registro y lo borras, entonces pasas a estar posicionado en el siguiente. Si haces un .next te lo saltas e iría "al siguiente del siguiente". Estarías borrando uno sí y uno no, uno sí y uno no...

¿Y el libro que te aconsejé?, parece que no has tenido tiempo de leerlo
Lo del boton era una opcion, poner dos botones uno que borre la tabla y otro que cargue la nueva tabla o al poner nuevo, borre la tabla y quede lista para su carga ya que esta se ve en un DBGrid en un formulario, asi el usuario lo limpiaria y seria mejor visualmete.
Tengo un formulario, en donde esta las tablas, un Query y un DBGrid donde muestro lo que se esta cargando y los botones de "nuevo", que borra los registros anteriores y permite su carga y "guardar" que pasa de una tabla a la otra los registros, esta realizada en paradox.
Hoy a la noche lo pruebo en Delphi y actualizo lo que pasa.
El libro bueno... estemm... ya lo tengo
Responder Con Cita
  #7  
Antiguo 02-08-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 13
DOS Va por buen camino
Cita:
Empezado por ozsWizzard Ver Mensaje
Funcionar, funcionaría si cambias Open por ExecSQL y, como dice Casimiro, te falta borrar en tabla 1.

Si lo que quieres es que esté todo en el mismo botón, hazlo en el mismo botón y después del insert borras

Código Delphi [-]with Query1 do begin Close; SQL.Clear; SQL.Add('INSERT INTO Tabla2'); SQL.Add('SELECT * FROM Tabla1'); ExecSQL; Close; SQL.Clear; SQL.Add('DELETE Tabla1'); ExecSQL; end;
Podria ser, lo tengo que probar, no conocia el comando ExecSQL, de esta manera tendria un solo boton, GUARDAR, en donde guardo los datos de una tabla a la otra y borro el registro de la primera asi queda lista para ser cargada, gracias.
Responder Con Cita
  #8  
Antiguo 03-08-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 13
DOS Va por buen camino
Realice una prueba de la siguiente manera
detfactura // tabla provisoria, esta se borra con cada carga
Numdetfact
Numfact
Cod_art
Cantidad

detfactfinal // tabla detalle final, esta se carga con la anterior
Numdetfact * // clave principal
Numfact // numero de la factura
Cod_art // relacionado con articulo
Cantidad // cantidad del producto

producto
cod_producto
nombre
importe

cliente
cod_cliente
nombre

factura // almacena todos los datos
cod_fact //es el numero de la factura que figura en Numfact de detfactfinal
cod_cliente
Fecha

y el boton "nuevo" con la siguiente codificacion:
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject); 
begin 
  with Query1 do begin         
    Close;         
    SQL.Clear;    
    SQL.Add('INSERT INTO detfactfinal');    
    SQL.Add('SELECT * FROM detfactura');    
    ExecSQL;     
    Close;    
    SQL.Clear;    
    SQL.Add('DELETE detfactura');    
    ExecSQL;   
  end; 
end;

Cuando lo hago correr me tira el siguiente error:""... raised exception class EDBEngineError with message 'Token not found, token: detfactura
Line Number: 1'.Process stopped..."
y me creo un nuevo archivo llamado ERRORINIS.DB, en donde si guarda lo cargado y la tabla original no se borra tampoco, que puede ser?

Última edición por Casimiro Notevi fecha: 03-08-2013 a las 20:39:25.
Responder Con Cita
  #9  
Antiguo 04-08-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 13
DOS Va por buen camino
Exclamation Ayuda con gratificacion

Bueno, lamentablemente se me termino el tiempo con mi proyecto final, lo tengo que entregar la semana que viene y salvo algunos detalles que trabajare sobre ellos, me falta la parte de facturación que esta a medias( un poco mas).
pero si no lo presento o esta mal tengo que recursar nuevamente el proximo año, es por falta de estudio, no lo creo, es por falta de tiempo, puede ser, es por falta de conocimiento y enseñanza, seguramente ya que aprendí mas en este foro que en clases.
Asi que ofresco $100.-(se que no es mucho, pero es muy simple lo que hay que hacer, para alguien que sabe)
Basicamente lo que resta hacer es lo siguiente;
1 los datos se cargan en una tabla temporal, llamada detfactura, la cual se debe borrar con cada carga nueva.
2 se debe almacenar los datos de la tabla temporal en la final 'detfacturafinal'
3 en la parte de historico poder ver todas las facturas realizadas
4 imprimir la factura.
les dejo las imagenes de la tabla factura (form14) y el archivo con todo completo.
Como veran el nivel del sistema es muy basico y esto se debe mantener así, lo mas sencillo posible y basico posible. Pueden realizar cambios si lo creen necesario.
El sistema esta realizado en Delphi7 y Paradox.
No queria llegar a esta situacion, pero no puedo recursar un año mas por esto, tengo 41 años, no me dedico a esto, trabajo en un deposito, ni voy a vivir de esto(lamentablemente) 10 o 15 años atrás seria diferente, ahora es solo por diversion.
Al que lo realice, lo debo probar y estar de acuerdo con lo realizado, el dinero se lo paso a la cuenta, por las dudas soy de argentina o a través de PayPal.
solamente gracias.



el archivo del sistema
https://www.dropbox.com/s/k4oh0ou4ndvkr4m/ITM.rar
Responder Con Cita
  #10  
Antiguo 04-08-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
te ayudo gratis.
Tengo el programa que quieres.
Saludos
NOTA: Por favor, lo mas detalladamente posible.
__________________
Siempre Novato
Responder Con Cita
  #11  
Antiguo 04-08-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 13
DOS Va por buen camino
Gracias, te envie un MP.
Responder Con Cita
  #12  
Antiguo 04-08-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Vamos paso a paso
1- El boton nueva factura que quieres que haga?
saludos
__________________
Siempre Novato
Responder Con Cita
  #13  
Antiguo 04-08-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
da la impresion de que el boton Nueva Factura se usa para insertar en detfacturafinal y borrar en detfactura pero que ?, ahi no se apunta nada mas que a todo en detfactura pero no se especifica nada, osea, no creo que haga nada.
Ademas el uso del query esta mal.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #14  
Antiguo 04-08-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Cuando se da doble click al dbgrid2 se inserta en detfactura el dato, me imagino que es la tabla temporal.
Se pretende con el boto (Nueva factura) borrar el contenido de la tabla temporal detfactura e insertar todo el contenido en la tabla detfacturafinal ????.
Buena pregunta.
Si es asi, el boton nueva factura tiene que recorrer la tabla temporal e ir insertando en la tabla nueva o final, pero segun algo, este algo tiene que ser el numero de factura.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #15  
Antiguo 04-08-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
El TabSheet2 sale sobrando, es una copia del dbgrid3 solo seria mover los botones de guardar e imprimir al TabSheet1.
Todo esta basado en tables.
saludos
__________________
Siempre Novato
Responder Con Cita
  #16  
Antiguo 04-08-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Ya se que estoy hablando solo, pero me entretengo
Saludos
__________________
Siempre Novato
Responder Con Cita
  #17  
Antiguo 04-08-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 13
DOS Va por buen camino
solapa carga de factura
boton Nueva factura :que limpie el DBGrid3 que es en el que se van cargando los elementos a facturar a traves del DBGrid 2, y la deje a la tabla en modo de edicion(table2 detfactura)
solapa detalle de factura
Boton Guardar : pasa los datos de la tabla temporal(table2 detfactura) a la final(table7 detfacturafinal) y a la tabla factura(table1 factura)
solapa historial
ver todas las facturas realizadas
Responder Con Cita
  #18  
Antiguo 04-08-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 13
DOS Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola
Ya se que estoy hablando solo, pero me entretengo
Saludos
disculpa estaba comiendo
Responder Con Cita
  #19  
Antiguo 04-08-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
El dbgrid3 esta ligado a la tabla detfactura (temporal), es un componente que tiene que ver lo que esta en el dataset, no lo puedes limpiar sin quitar los datos.
Osea, no puedes limpiar sin GUARDAR primero los datos en la tabla detfacturafinal y factura.
Me sigues ?
me entiendes ?
Saludos
__________________
Siempre Novato
Responder Con Cita
  #20  
Antiguo 04-08-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola DOS.

Perdón por lo tardía de la respuesta, pero es finde y no entro tanto...

Código Delphi [-]
    ...
    Close;  
    SQL.Text := 'DELETE FROM DETFACTURA';    
    ExecSQL;   
  end;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
Copiar registro de una Tabla a otra Tabla, sin repetirse MaMu Conexión con bases de datos 22 11-04-2013 15:29:11
Mysql: copiar los campos de una tabla de una base de datos a otra tabla de otra base? patriram MySQL 4 02-11-2007 16:00:24
copiar datos de una tabla en otra fedelphi Firebird e Interbase 6 24-08-2007 03:59:36
Copiar un registro de una tabla en otra... JuanErasmo SQL 6 10-07-2007 23:08:15
Copiar Tabla de una BD a Otra BD en Firebird pcicom SQL 3 14-02-2005 16:31:15


La franja horaria es GMT +2. Ahora son las 14:19:13.


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