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 03-12-2003
Bretema Bretema is offline
Miembro
 
Registrado: nov 2003
Ubicación: Vigo - Galicia
Posts: 37
Poder: 0
Bretema Va por buen camino
Post aplicacion mdi

Hola a todos,

He creado una aplicación de gestión con delphi 6, componentes IBX e Interbase 6.01. que funciona como mdi. En cada formulario (clientes, proveedores, consultas ...) he incluido el correspondiente IBDatabase, un IBTransaction y los correspondientes IBDataset, de manera que cada formulario maneja sus datos independientemente del resto.
El problema es que no se si este enfoque es el correcto para este tipo de aplicaciones, ya que cualquier modificación en la estructura de la base te obliga a peregrinar por los formularios realizando actualizaciones en los componentes IBDataset, y además cada vez que abres un formulario inicias una nueva conexión con la base de datos lo que en los puestos cliente puede demorar hasta 5 o 10 segundos, lo cual a los usuarios (los que trabajan para el jefe, que es el que paga el programa) les parece una eternidad.

¿Es mi enfoque correcto, hay alternativas que mejoren sobre todo el asunto de la velocidad en la apertura del formulario ... ?

Saludos.
Responder Con Cita
  #2  
Antiguo 03-12-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Yo soy partidario de poner todos los componentes de base de datos en un datamodulo y así tenerlos centralizados con lo cual las propiedades que se les den valen para todos los formularios en los que sea preciso utilizarlos, será suficiente con hacer "Use" sobre el Datamodulo.


Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 03-12-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.

El problema de este enfoque, Marcos, es que en aplicaciones MDI si tienes abiertos dos formularios del mismo tipo (digamos dos clientes), si utilizan un solo dataset en un datamodule, tendrás los mismos datos en ambos formularios.

Necesitas tener un dataset independiente para cada formulario.

En MDI, es habitual tener un datamodule general, en el que se ubica la conexión (no sé si podrias poner también un IBTransaction general, puesto que no conozco bien como trabaja IBX), así como los datasets generales que se pueden utilizar en distintos lugares, y que no necessitan mantener un estado (por ejplo. la lista de formas de pago, ....).

Finalmente necesitas tener distintos IBDataset para cada formulario, por lo que puedes optar por ponerlos en el formulario (recuerda que usarán la IBDatabase del datamodule general), o bien (más complejo) crear un datamodule para cada formulario, y poner el IBDatabase en ese datamodule asociado al formulario. Ahora en tiempo de ejecución, cuando se crea una instancia del formulario, se debe crear también una instancia de su datamodule, y enlazar los componentes data-aware del formulario, con los componentes en el data-module recien creado.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #4  
Antiguo 04-12-2003
Bretema Bretema is offline
Miembro
 
Registrado: nov 2003
Ubicación: Vigo - Galicia
Posts: 37
Poder: 0
Bretema Va por buen camino
Efectivamente, el enfoque de Marcos es el que utilizo para las aplicaciones sdi, pero en mdi se complica un poco y como comenta Marc necesito que cada formulario maneje sus propios datos y transacciones independientemente de lo que este pasando con los otros formularios que puedan estar abiertos. Con Ibx cada IBDatabase tiene que llevar obligatoriamente asociado un IBTransaction con lo cual a la solución que llegué fue a la planteada en mi mensaje inicial. Pero claro, el coste es un mantenimiento mas laborioso y una carga de formularios mucho mas lenta ya que si tienes un datamodulo abres la base una vez, mientras que ahora se abre cada vez que creas un formulario.

Saludos de nuevo.
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 12:15:11.


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