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 Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 07-02-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Código Delphi [-]
insert into tabla_b
select *, 0 from tabla_a

Pues aparentemente no funciona de ese modo, es lo primero que probé
Ya, pues..., ni qué decir que en MySQL funciona a la perfección

// Saludos
Responder Con Cita
  #22  
Antiguo 07-02-2012
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Hola, sí, desde delphi no hay problema, es que quiero hacerlo en la base de datos, desde un stored procedure, por ejemplo.
Entonces puedes hacer lo mismo en el procedimiento almacenado, consultando las tablas de sistema para obtener los nombres de los campos, y construyendo una sentencia SQL a ejecutar en un EXECUTE STATEMENT (no soy muy aficionado a construir sentencias dinámicamente, pero no parece que en este caso tengas más opciones).
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #23  
Antiguo 07-02-2012
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Código:
insert into tabla_b select *, 0 from tabla_a
Pues aparentemente no funciona de ese modo, es lo primero que probé
Debería funcionar correctamente, yo lo utilizo en ocasiones. Pruébalo de esta forma (con el alias de la tabla donde hay que coger todos los campos) :

Código:
insert into tabla_b select 0, tabla_a.* from tabla_a
Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #24  
Antiguo 07-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.011
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por roman Ver Mensaje
Ya, pues..., ni qué decir que en MySQL funciona a la perfección // Saludos
Sabía que ese iba a ser tu siguiente comentario


Cita:
Empezado por guillotmarc Ver Mensaje
Entonces puedes hacer lo mismo en el procedimiento almacenado, consultando las tablas de sistema para obtener los nombres de los campos, y construyendo una sentencia SQL a ejecutar en un EXECUTE STATEMENT (no soy muy aficionado a construir sentencias dinámicamente, pero no parece que en este caso tengas más opciones).
Parece que va a ser la solución, aunque tampoco me gusta mucho.
Responder Con Cita
  #25  
Antiguo 07-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.011
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¡¡¡ FUNCIONA !!!

Cómo he sido tan burro de no probar con alias.

Código SQL [-]
insert into tabla-B
select 0, a.* from tabla-A a
Responder Con Cita
  #26  
Antiguo 07-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.011
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Román, con firebird también se puede, ja, ja, ja...


¡¡¡ Gracias a todos, amigos !!!
Responder Con Cita
  #27  
Antiguo 07-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Pero esto no le va a poner un 0 al campo0 ?.
Osea, cero en todos los items ?.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #28  
Antiguo 07-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.011
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Caral Ver Mensaje
Hola
Pero esto no le va a poner un 0 al campo0 ?.
Osea, cero en todos los items ?.
Saludos
Bueno, puedes poner el valor que quieras, en mi caso es un número de un generador:
1. Extraer el número que toca, desde un generador
2. Ejecutar la sentencia.

Más o menos así: ejemplo:

Código SQL [-]
iID = GEN_ID(GEN_GLOBAL,1);

insert into tbapunteshistorico
select iID, a.* from tbapuntes a

Supongo que funcionará, voy a probarlo.
Responder Con Cita
  #29  
Antiguo 07-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Ah, ya decía yo que había gato encerrado en esto.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #30  
Antiguo 07-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Este tema lo deberías marcar aquí en Firebird.
Es muy interesante y educativo (todo un tutorial)
Por lo menos yo he aprendido muchísimo.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #31  
Antiguo 07-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.011
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues lo ponemos, así está más a mano
Responder Con Cita
  #32  
Antiguo 08-02-2012
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.408
Poder: 22
fjcg02 Va camino a la fama
Código SQL [-]
SET TERM ^ ;

CREATE OR ALTER PROCEDURE PRUEBA 
returns (
    consulta1 varchar(500))
as
declare variable consulta varchar(500);
declare variable campo varchar(250);
begin
  /* Procedure Text */
 CONSULTA1= 'INSERT INTO TABLA1 ';
 CONSULTA = ' SELECT ';
  for select f.rdb$field_name
    from rdb$relation_fields f
    left join rdb$fields fs on fs.rdb$field_name = f.rdb$field_source
    left join rdb$field_dimensions d on d.rdb$field_name = fs.rdb$field_name
    left join rdb$character_sets cr on fs.rdb$character_set_id = cr.rdb$character_set_id
    left join rdb$collations co on ((f.rdb$collation_id = co.rdb$collation_id) and
    (fs.rdb$character_set_id = co.rdb$character_set_id))
    where f.rdb$relation_name = 'TABLA1'
    order by f.rdb$field_position, d.rdb$dimension
    into :CAMPO
    do
     begin
       CONSULTA= CONSULTA||TRIM(CAMPO)||',' ;
       --suspend;
     end
     CONSULTA1=CONSULTA1||CONSULTA||' from TABLA2';
end^

Poniendo un par de parámetros que sean el nombre de la tabla y el del generador, no creo que sea demasiado difícil terminar el procedimiento.
Faltaría quitar la última coma de la relación de campos, pero lo dejo como ejercicio para los principiantes

Saludos
PD: Por supuesto que algún gurú dirá que se puede optimizar; claro que sí, pero no voy a poner todo el ejercicio resuelto.
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #33  
Antiguo 08-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.011
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por fjcg02 Ver Mensaje
PD: Por supuesto que algún gurú dirá que se puede optimizar; claro que sí, pero no voy a poner todo el ejercicio resuelto.
Claro, hombre, deja que trabajen las neuronas de los demás, que se van a atrofiar

Bueno, pienso que con todo lo comentado aquí ya puede servir de guía para problemas similares, abarcando distintos enfoques, métodos y formas diferentes de encarar un problema de ese tipo.

Gracias a todos
Responder Con Cita
  #34  
Antiguo 10-02-2012
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
Yo uso este query, ahí mando tres datos nuevos, la fecha en que borro, el motivo de haber borrado que entra como parametro y un consecutivo independiente (que a ratos creo que es necesario)... eso sí ya me ha pasado varias cenes el error de crear un campo en TEgresos y no crearla en TEgresos_Borrados pero por lo menos el erro que sale es muy diciente.
Código SQL [-]
insert into TEGRESO_BORRADOS
select A.*, CAST('NOW' AS DATE), :motivoBorrar, gen_id(TEGRESO_RELACION_GEN,1) from TEGRESO a 
where a.ID = :ID
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
Responder Con Cita
  #35  
Antiguo 10-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.011
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Gracias por el aporte, me puede ser de utilidad.
Responder Con Cita
  #36  
Antiguo 02-11-2012
TJose TJose is offline
Miembro
 
Registrado: may 2003
Posts: 162
Poder: 21
TJose Va por buen camino
Question

Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Quién diría que eres un novato?
Ambas tablas siempre se diferenciarán en un campo. Si una se modifica, entonces la otra también.

Código:
tabla-A
 campo1
 campo2
 campo3
 campo4
 campo5
 campo6
 campo7
 campo8
 ...
 campoXXX

tabla-B
 campo0  <- único campo distinto
 campo1
 campo2
 campo3
 campo4
 campo5
 campo6
 campo7
 campo8
 ...
 campoXXX
Hola Casimiro

¿Por qué modificas la estructura de la tabla?
¿Por cambios en las reglas de negocio o por otra razón?

Saludos
TJose
Responder Con Cita
  #37  
Antiguo 02-11-2012
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 18
mightydragonlor Va por buen camino
Pues a mi la mejor solució, por lo compresiva a nivel humano es:

Código SQL [-]
insert into Members (number, name)
  select number, name from NewMembers where Accepted = 1
    union
  select number, name from SuspendedMembers where Vindicated = 1

Sacado de la página de Firebird, lo busqué en google hace mucho tiempo como Insert into select =P

Saludos.
__________________
mas confundido que Garavito el día del Niño.
Responder Con Cita
  #38  
Antiguo 02-11-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.011
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola, de esta pregunta hace 10 meses, ya casi ni me acuerdo, pero el problema es que lleva un generador también, creo que no la has leido desde el principio
Responder Con Cita
  #39  
Antiguo 02-11-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.011
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por TJose Ver Mensaje
Hola Casimiro
¿Por qué modificas la estructura de la tabla?
¿Por cambios en las reglas de negocio o por otra razón?
Saludos
TJose
Sí, por ese motivo, nuevos campos que son necesarios según los clientes van pidiendo nuevas funcionalidades.
Responder Con Cita
  #40  
Antiguo 02-11-2012
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 18
mightydragonlor Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Hola, de esta pregunta hace 10 meses, ya casi ni me acuerdo, pero el problema es que lleva un generador también, creo que no la has leido desde el principio
El principio si, pero no todo jajajajjaa =P
__________________
mas confundido que Garavito el día del Niño.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Opciones para copiar registros de una tabla a otra pmtzg Firebird e Interbase 19 10-08-2011 19:30:40
copiar registros de una tabla a otra Rofocale Varios 11 07-06-2011 14:23:55
copiar ciertos registros de una tabla a otra JESUSNET Conexión con bases de datos 2 07-06-2008 17:53:13
Como copiar los datos de una tabla a otra Shidalis Varios 2 21-07-2005 15:34:32
Copiar registros de una tabla a otra en Access con Delphi Gelmin Conexión con bases de datos 1 01-07-2005 13:35:04


La franja horaria es GMT +2. Ahora son las 04:25:27.


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