![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Copiar campo ftDATASET a otro campo
Hola a todos,
Tengo dos TClientDataSet en los que he establecido una relacion de maestro detalle... (Llamemosles a este par --> SET1) En el TClientDataSet que actua como "maestro", al establecer la relacion, se ha creado un campo de tipo ftDataSet, el cual "apunta" a los registros de detalle... Este mismo mecanismo lo utilizo para otro par de TClientDataSet de iguales caracteristicas que los anteriores... (Llamemosles a este par --> SET2). El tema es que tengo que recorrer el dataset maestro de SET2 para insertar en el SET1 todos sus registros... (first; while not eof; asignaciones; next...) Para cada registro asigno cada campo individualmente y no tengo ningun problema... El problema lo tengo al asignar el campo de tipo ftDataSet... Lo intento con: cdsMaestro1.FieldByName('DTdetalle').value:=cdsMaestro2.FieldByName('DTdetalle').value; pero no lo asigna... No veo que exista ninguna propiedad de FieldByName como .asDataSet Pienso que tambien podria asignar el campo origen a un campo Dataset y recorrer este dataset detalle e irlo insertando registro a registro, pero me gustaria encontrar un metodo mas comodo similar a la asignacion directa de campo a campo... Alguien sabe como puede hacerlo? Gracias |
#2
|
||||
|
||||
Me temo amigo que para el detalle debes hacerlo registro a registro..
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Desde luego en delphi existe el método "Assign" que todas las clases descendiente de "TPersistent" lo heredan, dicho método supuestamente debería asignar(clonar) un objeto a partir de otro,claro está que cada clase debería sobreescribirlo(Override) e implementarlo, pero lamentablemente no todas las clases lo implemetan tan solo algunas que otras clases por ejemplo la clase TStrings,etc., pero la clase TClientDataSet no la ha sobreescrito. Actualmente desconosco si en las más nuevas versiones de Delphi se han implementado dicho método en más clases... De todas formas te pongo a continuacion un ejemplo de como clonar(copiar) un clientDataSet en otro de la siguiente Forma : Espero te sea de utilidad... Un saludo Clonado... ![]()
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7 |
#3
|
|||
|
|||
Hola rgstuamigo,
Lastima... Ya lo he hecho con otro bucle while... Por lo que comentas del clonecursor, estoy totalmente de acuerdo... Deberia llamarse, por ejemplo, linkDataSet... El codigo de ejemplo me sera util... Muchas gracias... Un saludo |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Incrementar campo según el valor de otro | subzero | Firebird e Interbase | 3 | 06-08-2008 21:41:52 |
campo de busqueda con otro campo | josi | Varios | 1 | 04-06-2008 00:53:07 |
Ordenar relacion Master/Detail por otro campo!! | arieliten | Impresión | 3 | 24-06-2005 14:54:21 |
Como copiar un registro cambiando el campo de clave primaria | Javi2 | SQL | 2 | 17-09-2004 20:49:50 |
Copiar campo | lore | Conexión con bases de datos | 3 | 09-02-2004 16:53:56 |
![]() |
|