FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Creación de campos en runtime TClientdataset
Hola a todos,
estoy enfrascado en un problemilla y me gustaría saber qué opinais. Tengo un TClientDataset al que le creo en runtime los campos que necesito. Hasta ahí bien, los creo, doy las altas de registros necesarios, preparo la información, y me funciona perfectamente. Como el Tclientdataset va a su bola, es decir, no extrae los datos de ninguna bbdd, ejecuto CDS.CreateDataset una vez creados los campos. Sin embargo, cuando lanzo el proceso por segunda vez, cambiando los campos, me da un error. Concretamente cuand ejecuto CDS.CreateDataset. Previamente, he borrado los campos que había creado anteriormente. También he intentado ejecutar el CreateDataset sólo la primera vez, pero también me da el error. Sabría alguien decirme qué demonios se me está escapando ? Gracias y un saludo Así borro los campos: Así creo los campos:
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#2
|
||||
|
||||
Olvido de novato: ¿qué error?
|
#3
|
||||
|
||||
Error:
CDS Field 'XX' not found Obviamente, no debe existir, lo he borrado para volver a crear los campos. Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#4
|
||||
|
||||
Hola,
Eso tiene que ver con la propiedad FieldDefs del TClientDataSet. Más info en ~ ¿Y si utiliza un nuevo ClientDataSet para la nueva estructura? En fin, son gustos. -
__________________
"constructive mind, destructive thoughts" |
#5
|
||||
|
||||
¿No será algún otro componente que tienes "enganchado" a ese ClientDataset, quien está buscando el campo?
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#7
|
||||
|
||||
Hola Javier.
Recuerda que puedes presionar Ctrl+C ("copiar") cuando te aparezca un mensaje de error. Así es fácil que nos muestres (Ctrl+V) el mensaje de error íntegro. Saludos. |
#8
|
||||
|
||||
fjcg02,
Cita:
Revisa este código: El código anterior en Delphi 7 sobre Windows 7 Professional x32, Permite crear y eliminar un TClientDataset de forma dinámica como se muestra en la siguiente imagen: Espero sea útil Nelson. Última edición por nlsgarcia fecha: 18-06-2015 a las 17:43:15. |
#9
|
||||
|
||||
Hola amigos, gracias a todos por las respuestas.
Revisando un poco todo lo que habéis puesto, os apunto lo siguiente: - El problema ocurre cuando cambio los campos que quiero visualizar. Si los campos son los mismos, no hay problema, se ejecuta perfectamente. Por lo tanto, el ejemplo de nlsgarcia, que es una pasada, en el que los campos son siempre los mismos, no reproduce mi problema. - La solución que me propone Neftali, también la había probado, desactivando el dataset y el dbgrid del TClientDataset. - Al, el mensaje que me da es el que he puesto, ni más, ni menos. Finalmente, la sentencia mágica que ha hecho que funcione todo bien, es la que ha apuntado Caminante, demostrando que no hay camino, se hace camino al andar .
Por lo tanto , queda resuelto mi problema, ya sólo me queda poner edulcorantes al formulario para tener toda la artillería montada. Lo dicho, muchas gracias a todos de nuevo y un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#10
|
||||
|
||||
Hola fjcg02.
Fijate si este ejemplo se parece a lo que estas buscando,
Saludos Edito: Perdón fjcg02, no ví tu último mensaje mientras tenía este abierto.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 18-06-2015 a las 19:04:03. |
#11
|
||||
|
||||
No importa Daniel, faltaría más, muchas gracias.
La verdad es que da gusto leer el código vuestro, no sé porqué siempre me parece mejor que el mío También los links que ha propuesto TOPX me han sido bastante útiles, aunque volveré a echarles otro vistazo. Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#12
|
||||
|
||||
fjcg02,
Cita:
Cita:
Revisa este código (Solo para complementar): El código anterior en Delphi 7 sobre Windows 7 Professional x32, Permite crear y eliminar un TClientDataset con campos aleatorios de forma dinámica como se muestra en la siguiente imagen: Nota: El ejemplo mostrado es básicamente similar al indicado en el Msg #8, la diferencia radica en que los campos creados son aleatorios. Espero sea útil Nelson. |
#13
|
||||
|
||||
Gracias de nuevo, nlsgarcia.
Buen código, la diferencia que hay con el mío es que yo el TClientDataSet lo tengo ya creado en el formulario, y tú lo creas cada vez que pulsas el botón. Puede ser una buena alternativa, ya que también me puede valer perfectamente. Lo voy a valorar. Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#14
|
||||
|
||||
Hola fjcg02.
Otra situación que se te puede presentar, es agregar campos luego de haber creado el ClientDataSet. Para hacerlo sin perder los datos que llevas cargados, podes hacer como en este ejemplo:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#15
|
||||
|
||||
Hola Daniel,
el caso que me planteas no se contempla en los casos de uso, ni creo que se dé. El truco es bueno, clonar el clientdataset, añadir los campos y copiarlos luego. Gracias, todas las ideas son buenas. Finalmente he optado por la opción de destruir el clientdataset y volverlo a crear, pero tras hacerlo, ahora los datos que obtengo no son correctos, aunque como dicen los buenos moderadores: "otro problema, otro hilo" Ahora me voy a dormir, a ver si después de descansar encuentro el gazapo que antes no tenía. Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#16
|
||||
|
||||
¡Joder, qué buenas aportaciones! El Club es grande.
|
#17
|
||||
|
||||
A veces da miedo preguntar, te responden tanto y tan bueno, que luego estás haciendo deberes varios días.
Al final he hecho un mix, el datasource lo creo en diseño, y el el tclientdataset lo genero , libero y vuelvo a generar tantas veces como necesite. Funciona de maravilla. A mis compañeros les ha gustado lo que he hecho: Sobre una consulta abierta, seleccionas campos para cabeceras de filas, campo para columnas, campo a utilizar, función de agregado ( count, sum, avg, max, min ) y voilá, te hace una pívot table en vivo y en directo que te muestra tan ricamente. Gracias a todos y un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Creacion de grupos en Runtime | Willo | Impresión | 1 | 16-11-2012 20:05:41 |
Problema de creación en Runtime | hgiacobone | OOP | 7 | 16-09-2011 15:19:35 |
Creación de TFields en Runtime | vinguel | Conexión con bases de datos | 5 | 16-11-2010 15:16:18 |
Creación de jpg en RunTime | sierraja | Gráficos | 4 | 06-10-2005 04:26:04 |
Creación de Forms en runtime con Tipo dinámico | Aprendiz | OOP | 2 | 29-09-2004 10:35:25 |
|