FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problemas copiando TIBQuery a TClientDataSet
Hola de nuevo,
Estoy tratando de crear una función para copiar el contenido de un TIBQuery a un TClientDataSet, donde tengo unos problemillas: La primera cuestión es el error que obtengo al tratar de trabajar con el TClientDataSet en tiempo de ejecución. Creo el objeto, pero al tratar de hacer un open para insertar un registro obtengo el error 'Missing data provider or data packet'. Y sabemos que trabajando en diseño no hay problemas, además lo he podido comprobar -con este ejemplo aquí publicado- La segunda cuestión, es que funcione la función que adjunto, pues me he basado en una que rodaba por el foro, pero usando TDataSet, el cual que yo sepa no me sirve pues hay que usar una clase hija de TDataSet. Esta función me es necesaria para tener un paquete de datos disponible tras realizar la query (previamente, y solo una vez) puesto que a veces necesito alimentar varios objetos con el resultado, o tener los datos disponibles sin molestar a la BBDD una y otra vez. Seguramente ya os habréis encontrado alguno con este tema antes. Aquí va la función que estoy tratando de hacer:
Muchas gracias y un saludo. |
#2
|
||||
|
||||
Hola.
Prueba esto:
__________________
Progress Openedge https://abevoelker.com/progress_open...dered_harmful/ Delphi forever... |
#3
|
||||
|
||||
¡Hola!
Lo que buscas es perfectamente viable pasando la información del Query al TClientDataSet de la forma habitual: usando un TDataSetProvider. Pero si aún lo quieres hacer con la función que has puesto, sólo tendrías que cambiar la instrucción Open por CreateDataSet. Pruébalo y nos dices cómo te funciona. Una cosa más: no hagas el Close al conjunto de datos cliente, porque eso causará que se pierda todo su contenido. Saludos. Al González. |
#4
|
|||
|
|||
Muchas gracias por vuestro tiempo y ayuda.
He probado vuestros consejos y voy con las respuestas: Cita:
Cita:
¿Tengo que definir los campos previamente, con fielddefs? ¿Hay alguna forma de hacerlo automaticamente, es decir que lo coja del resultado de la query? Otra cosa que me ronda la cabeza es lo que comentas de no poder cerrar ¿Te refieres al clientdataset?... puf, entonces la funcionalidad queda bastante reducida, ¿no? A ver qué aconsejais... esto está apunto de salir, y esta función es de esas a usar en todo proyecto... Un saludo. |
#5
|
||||
|
||||
Cita:
Cita:
Cita:
Si estás usando Delphi 7 o 2007 y no tienes inconveniente en emplear una de mis funciones, en GH Freebrary encontrarás un procedimiento llamado ghCopyFields que realiza esa tarea de "reproducción de campos". Tu función quedaría más o menos así (eliminé las sentencias innecesarias):
Cita:
Espero te sirva lo escrito y mi código. Coméntanos cómo te resulta. Un saludo. Al González. Última edición por Al González fecha: 10-02-2009 a las 01:21:59. |
#6
|
|||
|
|||
Hola y gracias de nuevo Al González por tus 'nutridas' respuestas.
Tendré en cuenta la librería que propones, pero seguí probando con la función y se me ocurrió que si ejecuto la query y luego copio los FieldDefs, mantedría la estructura de campos. Así con este enfoque me ha funcionado perfectamente, sólo había un error: La sentencia tabla.Append tuve que cambiarla por tabla.Insert para que añadiera cada nuevo registro. En cuanto al cierre del DataSet. Si cierro el data set ¡no se pierden los registros! lo he vuelto a abrir y ahí, estan los puedo recorrer y verificar uno a no. Por tanto esto esto funciona según he probado:
Y aquí va como ha quedado la ULTIMA versión de la función que hemos estado trabajando:
Un saludo. |
#7
|
|||
|
|||
Añadir sólo un apunte:
Cita:
Por lo demás la función funciona perfectamente y el dataset puede abrirse y cerrarse que los datos siguen ahí. Saludos. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Problemas copiando y pegando documentos mixtos | sue23cr | Varios | 1 | 13-07-2007 10:32:21 |
Problemas al actualizar un TClientDataset y ADO | PEDRO_PASAMAR | Conexión con bases de datos | 1 | 30-11-2004 10:52:46 |
Problemas con TClientDataSet | dmasson | Conexión con bases de datos | 5 | 30-05-2004 21:17:28 |
Problemas con In en TIBQuery | Rabata | Conexión con bases de datos | 1 | 15-10-2003 13:56:59 |
Problemas con In en TIBQuery | Rabata | SQL | 1 | 15-10-2003 13:56:59 |
|