Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-09-2007
pvizcay pvizcay is offline
Miembro
 
Registrado: jun 2006
Posts: 147
Poder: 18
pvizcay Va por buen camino
Question diseño centralizado de datasets, aplicación BD grande, crear componentes dinámicos..

hola amigos del foro,

supongamos que tengamos una aplicación de base de datos (grande, firebird + mdo), con varios forms (que se crean dinámicamente, incluso duplicados) y que casi todos utilizan además varios datasets de "soporte" (para lookups, realizar tareas comunes, etc.).. lo que estoy intentando lograr es centralizar estos datasets lo más posible, cosa que si tengo q modificar algo lo tenga en un solo lugar.. además de tener un diseño más limpio..

entonces empezamos creando un DataModule y tirando los 20-25 datasets en el mismo, completando el sqltext, los fields, etc..

el primer punto es que si bien varios forms utilizan los mismo datasets, tienen que ser distintos en tiempo de ejecución (osea cada Form dinámico tiene que tener su propia copia del dataset), por lo tanto con crear un solo DataModule y linkear todos los forms dinámicos al mismo no estamos..

una posibilidad sería crear un DataModule para cada nuevo Form, lo cúal a mi entender sería un desperdicio de recursos (y ni hablar si abrimos todos los datasets..).. otra opción sería crear un DataModule por cada dataset.. ni hablar..

la solución a este problema sería crear un componente en tiempo de ejecución y luego asignarle las propiedades guardadas en el stream de datos del dataset en cuestión (almacenado en el DataModule "padre", que le setié las propiedades en tiempo de diseño)

lo que traté fue algo como:
Código Delphi [-]
var
  ds: TMdoDataset;
begin
  ds := TMdoDataset.Create(Self);
  ds.Assign(DataModulePadre.dsXXXXX); << error
end

pero me da un error y obviamente porque la clase persistent define el método Assign con una llamada a un método q lanza una excepción solamente (osea está el método para que se complete en las clases derivadas).. en pocas palabras si queres copiar, tenes que hacer el override manual..

la pregunta es.. ¿alguien sabe como se logra lo que busco? o ¿un diseño que cumpla con lo q plantea el problema?

pd: tb se podría crear una función que te cree un dataset seteando todas las propiedades por código y te lo devuelva y usarlo por cada form dinámico que lo necesite, pero la gracia es aprovechar los diseñadores visuales de delphi me parece a mi..

pd2: cuando hablo de datasets puede entender, llamada un TMdoStoredProcedure o cualquier otro componente de datos que quiera reutilizar..

desde ya gracias!
Responder Con Cita
 



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Componentes Dinamicos (contenedores) JULIOCTORRESG Varios 7 22-11-2020 00:48:39
como crear componentes dinamicos sErgis .NET 3 06-06-2011 17:10:05
Problemas con componentes dinámicos mamaro OOP 2 14-10-2004 17:14:06
Destrucción de componentes dinámicos rafita OOP 5 16-04-2004 18:06:17
Crear Forms Dinamicos diegofhernando Varios 1 25-01-2004 02:26:19


La franja horaria es GMT +2. Ahora son las 22:46:40.


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