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-07-2003
Gisela Gisela is offline
Miembro
 
Registrado: jun 2003
Ubicación: Entre Ríos, Argentina
Posts: 12
Poder: 0
Gisela Va por buen camino
Question Módulo de datos con DbExpress

Hola a todos!! Tengo poca experiencia con Delphi así es que ha sido de mucha ayuda leer sus comentarios. Estuve buscando acerca de módulo de datos y no he encontrado lo que necesito así que espero alguno de ustedes pueda orientarme un poco.

Estoy usando dbExpress para conectarme a una base de datos PosgreSQL. Creo un módulo de datos para compartir consultas en varios programas pero quisiera lograr que sean como "sesiones" distintas, es decir que cuando selecciono un registro en un programa, no me cambie el cursor en el otro programa. Quizás con un ejemplo puedo ser más clara, supongamos que tengo una consulta de carreras que se cargan en un comboBox, al seleccionar una se muestran los alumnos en una grilla. En otro programa quiero usar un combo igual, aprovechando el sql que ya tengo creado en el módulo y en lugar de mostrar alumnos muestro los títulos que otorga esa carrera. Si cambio la selección en el programa que muestra alumnos, va a cambiar la selección en el programa que muestra títulos. ¿Cómo sería la forma correcta de trabajar en un caso así? ¿Se puede usar simultáneamente una consulta de un módulo sin que cambien los cursores de todos los programas?

Espero haber sido suficientemente clara, y que alguno pueda darme una idea. Gracias!!!

Gisela
Responder Con Cita
  #2  
Antiguo 01-07-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
No se si es verdaderamente lo que necesitas, pero te recomiendo ver la ayuda de:
  • TDataSet.DisableControls
  • TDataSet.EnableControls

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 01-07-2003
Gisela Gisela is offline
Miembro
 
Registrado: jun 2003
Ubicación: Entre Ríos, Argentina
Posts: 12
Poder: 0
Gisela Va por buen camino
Gracias por tu pronta respuesta pero creo que no es lo que estoy buscando, porque si le pongo DisableControls al ClientDataSet, me deshabilita para seleccionar en todos los programas que estén usando ese Client del módulo de datos ...

Lo que funciona es poner en el módulo de datos solo el Query y en cada programa su propio Provider, ClientDataSet y DataSource (y que usen el Query del módulo de datos). Pero la verdad todavía no me resigno a tener tantos componentes repetidos. Quizás el problema original es que no conozco como sería el modo correcto u óptimo de usar estos cuatro componentes de dbExpress ...

Espero alguna otra idea Gracias de nuevo
Gisela
Responder Con Cita
  #4  
Antiguo 02-07-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Yo lo que hago es clonar el clientdataset en cada formulario. Es decir, en el datamodule dejas el query + provider + clientdataset, y lo abres.

Al cargar un formulario clonas el clientdataset del datamodule, sobre un clientdataset local al formulario :

cdsLocal.CloneCursor(dmData.cdsCompartido, True);

Ahora el cdsLocal contiene los mismos datos que el cdsCompartido, pero cuando te muevas sobre sus registros, no te moverás en el cdsCompartido. (Aunque si añades o modificas registros, estos cambios si que aparecerán en el otro clientdataset).

NOTA : Lo bueno de este sistema es que los datos solo se consultan una vez en la base de datos (en cambio con tu sistema actual, cada vez que abres el formulario se vuelven a cargar los datos via el query del datamodule), y los datos se mantienen sincronizados si haces cambios en cualquiera de los clientdatasets clonados.

El problema, es que tendrás que añadir clientdataset y datasources en los formularios. Por cierto si necesitas tener los campos persistentes, puedes siemplemente copiar el clientdataset del datamodule sobre el formulario (con lo que se copian los campos). o entrar en la lista del fields editor del clientdataset del datamodule, seleccionar todos los campos y Ctrl-C, te vas al fields editor del clientdataset local, y los podrás pegar sin problemas.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 02-07-2003
Gisela Gisela is offline
Miembro
 
Registrado: jun 2003
Ubicación: Entre Ríos, Argentina
Posts: 12
Poder: 0
Gisela Va por buen camino
Thumbs up

Esto es lo que estaba buscando. Voy a leer la ayuda de Delphi para comprender mejor como funciona el CloneCursor. Ahora tengo que definir en qué momento paso los parámetros a los Query y abro los ClientDataSet del DataModule para que estén disponibles para clonarlos en los formularios... quizás en el menú de la gestión que estoy modelando.

Muchas gracias Marc!!

Gisela
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 15:40:29.


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