Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Copia TClientDataSet (https://www.clubdelphi.com/foros/showthread.php?t=12677)

santisg 23-07-2004 18:50:13

Copia TClientDataSet
 
Hola,

Hace algunos días que le llevo dando vueltas a un asunto...
Resulta que necesito copiar los datos de un TClientDataSet abierto a otro
cerrado pero que tiene algunos campos calculados ya creados. La gracia esta
en que estos campos se conserven, cosa que no pasa si asigno la variable
DATA de uno al otro.

He llegado a la conclusión de que para poder hacer esto es necesario que
todos los campos del dataset que tiene los datos esten ya creados en el
dataset destino antes de hacer la copia. De esta manera no se machacan los
nuevos campos.

Encontre unas rutinas por internet que hacian mas o menos esto y aunque
funciona, me da problemas con algunos datasets:
http://www.distribucon.com/download/midas/fieldinfo.zip

El codigo de esas rutinas es algo complejo, parece mentira que haya que
escribir tanto codigo para duplicar la estructura de los campos de un
dataset a otro. Alguien sabe si existe alguna manera sencilla de hacer esto?

Gracias.

guillotmarc 23-07-2004 18:57:29

Hola.

¿ No te sirve clonar el ClientDataSet ?. Aunque deberás tener los campos calculados en los dos Clientdatasets. (En el primero los puedes tener desactivados, y activarlos en el ClientDataset clonado).

Consulta el método CloneCursor del ClientDataset.

Saludos.

santisg 23-07-2004 19:58:57

Si puedo crear esos campos calculados en el dataset origen sin cerrarlo, de coña. Pero creo que eso no es posible, me equivoco?

guillotmarc 23-07-2004 20:56:02

Hola.

En efecto, no creo que puedas crearlos con el dataset abierto. Pero, ¿ no puedes crearlos en tiempo de diseño ?, si te molestan, simplemente dejalos inactivos.

Saludos.

santisg 23-07-2004 21:43:25

imposible, es un dataset creado por codigo en tiempo de ejecucion :(

guillotmarc 23-07-2004 22:06:10

Hola.

¿ Y no se pueden añadir los campos calculados antes de abrirlo ?. Además ¿ hay alguna razón especial para que no se pueda crear en tiempo de diseño ?.

Saludos.

santisg 23-07-2004 23:48:29

Hola de nuevo

No se pueden crear antes de abrirlo porque el dataset me lo proporciona una funcion a la que llamo, le paso el nombre de la tabla y me devuelve el dataset ya abierto, es una funcion que no puedo modificar y cuyo codigo es demasiado complejo como para modificarlo, tampoco puedo prescindir de ella.

No puedo tenerlo en tiempo de diseño porque las funciones que estoy haciendo estan orientadas a formar parte de capas intermedias bien encapsuladas sin ningun componente visual. Tampoco puedo usar datamodules por por motivos varios.

Gracias por todo.
Santi


La franja horaria es GMT +2. Ahora son las 22:53:04.

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