![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
'close data set' con dbExpress y midas.
Hola a todos.
Tengo un grabísimo problema: Estoy migrando una aplicación de parados-bde a interbase-dbExpress. Accedo a una tabla con un tSqlDataSet. Esta tabla podría ser la de clientes. Le asocio un TDataSource. Accedo a otra tabla de facturas con otro tSqlDataSet, pero le pongo como parámetro el código de socio que tendrá que pillar del tDataSource de Clientes. Tambien le asocio otro tDataSource. Por último accedo a otra tabla (por ejemplo líneas de factura) pero dejando el código de factura como parámetro para que lo coja del TDataSoruce de Facturas. Pongo un tDataSetProvider y lo asocio con la tabla de clientes. Pongo un tClientDataSet asociado al tDataSetProvider. Le doy a añadir todos los campos y me aparece un CampoDataSet. Coloco otro tClientDataSet y lo asocio con el campo del primero. Le doy a añadir campos y me aparece otro CampoDataSet, que asocio con otro TClientDataSet. El problema es que cuando activo el tClientDataSet (cualquiera de ellos) me da el error: 'ClientesCds: Cannot perform this operation on a closed dataset'. He probado algo parecido (pero más sencillo) y me funcionaba correctamente. Alguíen puede ayudarme? |
#2
|
|||
|
|||
Hola, antes que nada viendo tu cantidad de mensajes te doy la bienvenida al foro. Espero que puedas encontrar todo lo que necesites y que puedas aportar todo lo que creas interesante.
Dicho esto voy a aclarar que me mareó un poco tu mensaje, no porque esté mal sino porque es muy temprano para mi cabeza!!!! ![]() Lo que se me ocurre es que si estás relacionando los datasets lo más normal sería "activarlos" según su dependencia, es decir con jerarquía (los tSqlDataSets por ejemplo). Pero no sé si te soluciona algo, esto más que nada es una prueba. Esto lo digo porque el error parece indicar que un master dataset no está abierto y al tratar de activar uno relacionado de alguna con éste falla. Todo es una suposición, así que perdón si me equivoco. Saludos!
__________________
Suerte .: Gydba :. |
#3
|
|||
|
|||
Hola, Antes de nada gracias por la bienvenida.
Efectivamente estoy de acuerdo contigo: parece que por alguna estraña razón los querys ¡¡¡no se abren!!! al activar el ClientDataSet. Pero si los abro de uno en uno (los Querys) si que se abren sin problemas, lo que me indica que no debe de ser un fallo de la sentencia sql. Estoy volviendo ha hacer todo en otro data modulo para probar y me está funcionando. No se que puede pasar. Comparo las propiedades de los objetos (los del primer datamodulo con los del datamodulo de pruebas) y están todas iguales, sólo que en el segundo funcionan... PD: por cierto soy usuario registrado dese hace mucho tiempo. Lo que pasa es que en estos nuevos foros nunca había escrito ni para preguntar, ni para contestar. |
#4
|
|||
|
|||
![]() Hola, vean mi solicitud acerca de la recomendación de Delphi a un nuevo programador. Este tipo de cosas es la que veía que les pasaba a los desarrolladores de Delphi en donde trabajo. Todo parecía estar bien pero no andaban. Lo hacían de nuevo exactamente igual, y ¡¡bingo!!. No estoy acostumbrado a renegar (Clipper jamás lo hizo) y no quisiera empezar a hacerlo :0(
Gracias y disculpen mi intromisión... |
#5
|
|||
|
|||
Hola
El problema creo que es el siguiente. Cuando abres un TClientDataSet, este controla el dataset al que está enlazado (en este caso la consulta) y lo abre o cierra según necesite. La solución pasa por asociar el TDataSource al TClientDataSet y no al TSQLDataSet, usando para todo TClientDataSet. un saludo |
#6
|
|||
|
|||
Cita:
PD: Aunque he revisado todas las propieades de todos los objetos y tal, y tal... prefiero pensar que hay un error mio en algún lado y que en breve lo encontraré a pensar que las relaciones DBExpress-DataSetProvider-ClientDataSet tienen fallos incontrolables. |
#7
|
|||
|
|||
Hola. Sigo con lo mio pero quería comentaros una cosilla:
Algunas veces después de meterle la sentencia Sql al TSqlDataSet me da este error: "Incorrect values within SQLDA structure". Entonces edito la sentencia, le cambio cualquier cosilla pero después la dejo como estaba (añado un espacio, y lo borro), activo el componente y ya no da el citado error. Es algo muy raro ... Saludos. |
![]() |
|
|
![]() |
|