Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-10-2004
j-vi j-vi is offline
Registrado
 
Registrado: may 2003
Ubicación: Rial de Lagoa- Laiño, Dodro, la Courña, España
Posts: 7
Poder: 0
j-vi Va por buen camino
'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?
Responder Con Cita
  #2  
Antiguo 01-10-2004
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
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 :.
Responder Con Cita
  #3  
Antiguo 01-10-2004
j-vi j-vi is offline
Registrado
 
Registrado: may 2003
Ubicación: Rial de Lagoa- Laiño, Dodro, la Courña, España
Posts: 7
Poder: 0
j-vi Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 01-10-2004
axelbb axelbb is offline
Miembro
 
Registrado: oct 2004
Posts: 127
Poder: 20
axelbb Va por buen camino
Exclamation Estas cosas son las que me asustan de Delphi

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...
Responder Con Cita
  #5  
Antiguo 01-10-2004
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
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
Responder Con Cita
  #6  
Antiguo 01-10-2004
j-vi j-vi is offline
Registrado
 
Registrado: may 2003
Ubicación: Rial de Lagoa- Laiño, Dodro, la Courña, España
Posts: 7
Poder: 0
j-vi Va por buen camino
Cita:
Empezado por basti
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
Esta parece una solución correcta aunque estaríamos haciendo la relación en la "supuesta" capa de interfaz en vez de en la de datos. Lo que pasa es que el otro sistema ahora parece que funciona correctamente. Casi he terminado de enlazar todas las tablas, voy probando de una en una para encontrar el error cuanto antes.

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.
Responder Con Cita
  #7  
Antiguo 01-10-2004
j-vi j-vi is offline
Registrado
 
Registrado: may 2003
Ubicación: Rial de Lagoa- Laiño, Dodro, la Courña, España
Posts: 7
Poder: 0
j-vi Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 13:28:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi