![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
También quisiera saber como clonar un IbDataSet
Reflotando este hilo de gluglu de hace ya más de un año, quisiera saber si lograste resolver el problema de la clonación y cómo lo hiciste porque yo ahora me encuentro en la misma situación.
En mi caso es un fibdataset pero supongo que será igual que un ibdataset. Quiero tener dos dbgrid que reciben datos de dos fibdataset distintos pero con el mismo sql, misma tabla,etc. Es decir el ds2 es un clon del ds1. Lo que quiero hacer es poder filtrar el ds2 de forma independiente al ds1 y así, en un dbgrid mostrar todos los datos de una consulta, y en el segundo dbgrid los datos filtrados. Recorrer los datos del ds1 no me sirve por lentitud y asignar todas los propiedades del ds1 al ds2 incluída la consulta en sql y volverla a abrir es también muy lento. ¿Alguna solución? Un saludo. |
|
#2
|
||||
|
||||
|
Respondiendo a Ángel. Yendo desde lo más básico, podrías averiguar si el componente FIBDataSet cuenta con un método llamado Clone, CloneCursor o algún otro por el estilo, como es el caso en ciertos tipos de componentes de acceso a datos, y entonces ver su ayuda y probarlo para ver si te funciona como esperas.
Ahora bien, si lo anterior no fuese factible y continuase tu justa indisposición a ejecutar de nuevo la consulta sobre el servidor con otro componente (por la lentitud que mencionas), existe la alternativa sugerida arriba por ramiretor de usar componentes TClientDataSet. Una de las ventajas de esta clase de objeto es que posee un método llamado AppendData con el cual puedes copiar el contenido de un conjunto de datos dentro de otro, sin tener que realizar ninguna nueva consulta al servidor ni recorrer manualmente cada uno de los registros originales. Si lo analizas, hacer dos veces la consulta sobre el servidor es lo que más vale la pena tratar de evitar, pero el copiar las propiedades de un componente a otro puede que no pase de escribir unas cuantas líneas. En caso de que aún esto último quisieras evitar, y trabajes con Delphi 7, podrías emplear la función ghCloneDataSet de GH Freebrary (sin pretender hacer spam). Esta función no clona los registros contenidos en el conjunto de datos, pero sí se encarga de crear un nuevo componente con todas y cada una de las propiedades y eventos establecidos en el original, además de sus parámetros e incluso campos persistentes que le hayas establecido en tiempo de diseño (con la opción de excluir algunos de estos elementos).
NOTA: Dependiendo de cuál sea el actual dueño del conjunto de datos a clonar, convendrá excluir del copiado a la propiedad Name, ya que no es posible tener dos componentes del mismo nombre conferidos al mismo dueño (propietario), a menos, claro, que la propiedad Name de éstos se deje vacía. (El ejemplo lo hice con los conjuntos de datos colocados dentro del formulario). Un abrazo con copia. Al. ![]() Última edición por Al González fecha: 26-10-2008 a las 04:51:33. |
|
#4
|
|||
|
|||
|
Gracias por vuestra ayuda Ronpablo y Al. Como siempre, el maestro Al siempre da más de lo que uno podría esperar en este foro. Espero algún día saber la mitad que tú.
Un saludo. |
|
#5
|
|||
|
|||
|
Lo he resuelto con el componente kbmMemTable
He resuelto el problema con el componente kbmMemTable que es libre para uso no comercial.
Podéis bajarlo de http://www.components4programmers.co...able/index.htm Se inserta un kbmMemtable y se le asignan las siguientes propiedades:
Luego conectamos un datasource al memtable1 y un dbgrid al datasource y listo. No es la solución que me sugería Al González; es peor quizá porque implica el uso de componentes de terceros, pero cuando Al me contestó ya estaba casi resuelto y he querido dejar constancia de ello. Espero le sirva a alguien. Un saludo. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Duplicar / Clonar tabla con ADO | Marcb3 | Conexión con bases de datos | 2 | 30-01-2007 13:15:37 |
| Como Clonar un ibDataset???? | AGAG4 | Firebird e Interbase | 4 | 28-10-2004 17:21:36 |
| IBX TIBDataset ¿cómo lanzar las distintas sentencias en él? | trastamara | Firebird e Interbase | 5 | 08-09-2004 00:36:14 |
| Búsquedas y TIBDataSet | Clantt | Conexión con bases de datos | 0 | 12-08-2004 01:01:07 |
| Orden en TIBDataset | barman | Firebird e Interbase | 6 | 24-11-2003 21:26:00 |
|