Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Copiar el contenido de un DataSet a otro DataSet (https://www.clubdelphi.com/foros/showthread.php?t=27455)

Javi2 21-11-2005 16:00:25

Copiar el contenido de un DataSet a otro DataSet
 
Hola,

¿Hay alguna manera rápida de copiar el contenido de un TDataSet a otro TDataSet?Por si sirve de algo, los datos los obtengo a través de una TQuery

Muchas gracias

ContraVeneno 21-11-2005 16:36:54

¿y si utilizas el mismo query para los dos datasets?

Javi2 21-11-2005 16:45:30

Es un poco complejo de explicar pero no me sirve. Realmente necesito copiar el contenido de un TDataSet en otro.

Muchas gracias por tu ayuda

Javi2 21-11-2005 17:07:06

He encontrado el siguiente procedimiento que creo que me servirá (tiene buena pinta):

procedure MoverDatosTabla(prmDSOrigen, prmDSDestino :TDataSet);
var Campo :string;
i :integer;
begin
prmDSDestino.EmptyTable;
prmDSDestino.Open;

with prmDSOrigen do begin
Open;
while not EOF do begin
prmDSDestino.Append;
for i := 0 to FieldCount-1 do begin
Campo := prmDSOrigen.Fields[i].FieldName;
prmDSDestino[Campo] := prmDSOrigen[Campo];
end;
prmDSDestino.Post;
Next;
end;
Close;
end;
prmDSDestino.Close;
end;

Os lo dejo aquí por si a alguien le interesa.

Muchas gracias a todos por vuestra colaboración.

Enan0 21-11-2005 17:24:30

y con un

Dataset1:=datasetorigen;

en este caso tendrias los datos en dos datasets distintos

maeyanes 21-11-2005 17:37:19

No, así lo único que estaría haciendo es solo apuntar al mismo dataset de origen desde otra variable.



Saludos...

Neftali [Germán.Estévez] 21-11-2005 18:07:26

Cita:

Empezado por Javi2
¿Hay alguna manera rápida de copiar el contenido de un TDataSet a otro TDataSet? Por si sirve de algo, los datos los obtengo a través de una TQuery

Eso no tiene mucho sentido; Los datos que están viendo en el DataSet son el resultado de una consulta;
(a) Si lo que quieres es otro DataSet con los mismos datos, vuelve a ejecutar la misma consulta en el segundo DataSet.
(b) Si el segundo DataSet es una tabla, yo te recomiendo que revises la cláusula SQl INSERT..INTO; Una vez insertados abre el segundo DataSet sobre la tabla destino.
(c) Si el segundo DataSet es una tabla y no puedes utilizar INSERT..INTO; Haz un recorrido por el primer DataSet y ves insertando en el segundo (Post o INSERT-SQL-);
(d) Si el segundo DataSet es una tabla y usas BDE, revisa en la ayuda de Delphi sobre el componente TBachMove.

Rayku 02-11-2006 16:40:43

Ok Veamos
 
usa la funcion clone,

Código Delphi [-]
ado.clone(cventa.listarseries(dmconeccion.adoconection,error));

la funcion listar series es otro dataset

//Lo Edite para poner todo en minusculas

Rayku 02-11-2006 16:43:01

Código Delphi [-]
ADODATASET2.Clone(ADODATASET1);

ok espero este mejor explicado aqui

//Lo edite por la misma razon del anterior

maeyanes 02-11-2006 18:43:19

Hola...

Ya te fijaste de la fecha del mensaje original? Es de hace más o menos un año...

Otra cosa, te recomiendo que leas la Guía de Estilo de los foros.

Saludos...

Neftali [Germán.Estévez] 02-11-2006 18:46:22

Cita:

Empezado por maeyanes
...Es de hace más o menos un año...

Espero que no esté esperando la respuesta...:D:D:D

jesusomarsanche 29-03-2007 21:25:36

tarde pero sin sueño
 
si los dos dataset tienen la misma estructura

Código Delphi [-]
 
insert into tabladestino select * from tabla origen [where ....][order by ...]

si no tienen la misma estructura


Código Delphi [-]
insert into tabladestino select campo1,campo2,... from tabla origen [where.... ][order by ...]
o


Código Delphi [-]
insert into tabladestino(campo1,campo2,..) select campo1,campo2,... from tabla origen [where.... ][order by....]


espero les sirva, logico a los que andemos buscasdo un caso similar, ya que la pregunta tiene bastante tiempo :D

jhonny 29-03-2007 21:30:04

Este Hilo podría ser bautizado como el Ave Fénix :D :D :D

maeyanes 29-03-2007 21:31:54

jaja...

Reviviendo hilos viejos... :p

Que cosas...

ContraVeneno 29-03-2007 22:23:36

Y habiendo renacido de las cenizas, con el poder que se me confiere, les digo hoy mis hermanos, que el día 21/11/2007 este hilo volverá a renacer como lo ha estado haciendo por los últimos dos años....

jhonny 29-03-2007 22:29:11

Cita:

Empezado por ContraVeneno
Y habiendo renacido de las cenizas, con el poder que se me confiere, les digo hoy mis hermanos, que el día 21/11/2007 este hilo volverá a renacer como lo ha estado haciendo por los últimos dos años....

Estaré allí para recordarlo :D

ContraVeneno 21-11-2007 17:15:48

Pues aquí estoy, reviviendo el hilo que renace cada año.

No se me olvidó, pero creo que a Jhonny sí

:D:D

Saludos

eduarcol 21-11-2007 17:25:43

que clase de alarma extraña tenias programada por ahi :D

jhonny 21-11-2007 17:46:33

Cita:

Empezado por ContraVeneno (Mensaje 247468)
Pues aquí estoy, reviviendo el hilo que renace cada año.

No se me olvidó, pero creo que a Jhonny sí

:D:D

Bueno, parece que tuve un problema con el calendario de google pues no quizó decirme nada :D :D :D, aunque la verdad es que siempre me acuerdo de estas cosas pero esta se me paso por completo. :p

jhonny 21-11-2007 18:02:24

Definitivamente no tenia bien configurado ese recordatorio :D...

http://img512.imageshack.us/img512/2...revivirza8.jpg


La franja horaria es GMT +2. Ahora son las 16:14:09.

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