Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Duplicar Registros (https://www.clubdelphi.com/foros/showthread.php?t=52859)

Chris 01-02-2008 20:38:14

Duplicar Registros
 
Antes de que se vaya a ir quien me pueda ayudar, mejor me apuro a hacer mi pregunta


Lo que pasa es que tengo una función para duplicar registros en el sistema que estoy desarrollando, Lo hago con código de Delphi. El problema es que también quiero duplicar los detalles de este registro por medio de SQL y con un Select anidado. No sé como hacerlo. He intentado el siguiente código.

Código SQL [-]
Insert into DetallesTable (PADRE, TIPO, CODIGO, DESCRIPCION)
VALUES
:CODIGO_NUEVOPADRE,
    (Select Tipo, Codigo, Descripcion from DetallesTable
       Where PADRE=:CODIGO_PADREORIGINAL)

Algo por el estilo he intentado hacer, pero me da el error de que el numero de Parámetros y valores no coinciden.

Literalmente, el código que manda el servidor es: "count of column list and variable list do not match"

Apreciaré cualquier ayuda al respecto que puedan proporcionarme.

enecumene 01-02-2008 20:43:05

bueno lo que te propongo es mas que una idea que solucion:

Código SQL [-]
 INSERT INTO TABLA1 (CAMPO1, CAMPO2) SELECT CAMPO1, CAMPO2 FROM TABLA WHERE CAMPO=VALOR

;) Saludos.

keyboy 01-02-2008 20:47:34

No parece ser necesaria una subconsulta:

Código SQL [-]
Insert into DetallesTable (PADRE, TIPO, CODIGO, DESCRIPCION)
Select :CODIGO_NUEVOPADRE, Tipo, Codigo, Descripcion from DetallesTable
Where PADRE=:CODIGO_PADREORIGINAL

Bye

Chris 01-02-2008 20:52:21

Gracias enucumene por el interes, pero no me funciona. Al contrario me dice que el Select es invalido.

enecumene 01-02-2008 20:54:36

Cita:

Empezado por D&W (Mensaje 262836)
Gracias enucumene por el interes, pero no me funciona. Al contrario me dice que el Select es invalido.

Vale, ya la propuesta de KeyBoy? es casi identico al mio, por cierto, no has dicho que base de datos usas ;).

Saludos.

keyboy 01-02-2008 20:56:26

Cita:

Empezado por enecumene (Mensaje 262837)
no has dicho que base de datos usas ;).

Pues no sé por qué, pero juraría que es Interbase o Firebird :)

Bye

Chris 01-02-2008 20:59:01

Cita:

Empezado por enecumene (Mensaje 262837)
Vale, ya la propuesta de KeyBoy? es casi identico al mio, por cierto, no has dicho que base de datos usas ;).

Saludos.

La de KeyBoy es la misma practicamente, lo que no sé, es que si nuestro amigo se habrá equivocado tenido algún error al tepear el código, ya que hasta donde veo, no es una consulta SQL valida.

Con respecto a la base de datos que utilizo enecumente, Mira: Sube tus ojo a la parte superior izquiera de tu pantalla, abajo de un Rotulo que dice "Club Delphi" encontrás la respuesta. :D ;)

Saludos.

enecumene 01-02-2008 21:02:30

Vale que tonto soy, :D:D:D, es que estoy demasiado animado con las chicas que hay en la fiesta de Egostar...:D:D

enecumene 01-02-2008 21:05:32

Por cierto, la propuesta de KeyBoy es invalida porque hay un parametro en el select y no se puede sino despues del Where, creo yo.:D

Saludos.

Chris 01-02-2008 21:12:32

Cita:

Empezado por enecumene (Mensaje 262849)
Por cierto, la propuesta de KeyBoy es invalida porque hay un parametro en el select y no se puede sino despues del Where, creo yo.:D

Saludos.

Pues se nos ha caido el sapote -a como decimos aca- enecumene, por que el código es a como lo ha puesto KeyBoy. Lo que sucede es que cuando vas a duplicar los registros o insertar regitros desde otra tabla no se necesita de la palabrita "values", simplemente queda a como lo ha dicho KeyBoy.

A inicio me dio error porque siempre utilizaba "Values"

Gracias KeyBoy.

Enecumene: También estaba viendo a las chicas :D.

egostar 01-02-2008 21:20:53

A ver, prueba esto amigo D&W

Código SQL [-]
Insert into DetallesTable (PADRE, TIPO, CODIGO, DESCRIPCION)
VALUES :CODIGO_NUEVOPADRE, 
  (Select Tipo from DetallesTable Where PADRE = :CODIGO_PADREORIGINAL), 
  (Select Codigo from DetallesTable Where PADRE = :CODIGO_PADREORIGINAL),
  (Select Descripcion from DetallesTable Where PADRE = :CODIGO_PADREORIGINAL)

Salud OS

Edito: Vaya, pues ya tienes la solución, bien por esa keyboy

enecumene 01-02-2008 21:25:47

Cita:

Empezado por D&W (Mensaje 262851)
Pues se nos ha caido el sapote -a como decimos aca- enecumene, por que el código es a como lo ha puesto KeyBoy. Lo que sucede es que cuando vas a duplicar los registros o insertar regitros desde otra tabla no se necesita de la palabrita "values", simplemente queda a como lo ha dicho KeyBoy.

A inicio me dio error porque siempre utilizaba "Values"

Gracias KeyBoy.

Enecumene: También estaba viendo a las chicas :D.

Vale, no sabia que estabas poniendo values, si mi propuesta no lo tiene, pero bueno, te funciono, no?

Saludos.

Chris 01-02-2008 21:35:30

Cita:

Empezado por enecumene (Mensaje 262855)
Vale, no sabia que estabas poniendo values, si mi propuesta no lo tiene, pero bueno, te funciono, no?

Saludos.

No me funcionó porque cuando la prove no le quité el "values"

Saludos.

Cita:

Empezado por egostar (Mensaje 262854)
A ver, prueba esto amigo D&W

Código SQL [-]Insert into DetallesTable (PADRE, TIPO, CODIGO, DESCRIPCION)
VALUES :CODIGO_NUEVOPADRE,
(Select Tipo from DetallesTable Where PADRE = :CODIGO_PADREORIGINAL),
(Select Codigo from DetallesTable Where PADRE = :CODIGO_PADREORIGINAL),
(Select Descripcion from DetallesTable Where PADRE = :CODIGO_PADREORIGINAL)


Salud OS

Edito: Vaya, pues ya tienes la solución, bien por esa keyboy

PD.: Gracias ego, se nota que eres un buen programador, en especial en SQL ;)
Edito: Me gustan tus sub-sub-sub selects :)


La franja horaria es GMT +2. Ahora son las 15:46:26.

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