![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Tal como han dicho, estás incursionando en un ORM o un "Framework de Persistencia".
La idea es interesanta, pero a mi entender te falta completar "la pieza" importante. Tienes: 1) La clase TCliente. No se si realmente la tienes así definida o simplemnte la has puesto así aquí para simplificar, pero un primer consejo es que todas tus clases de "persistenca" deriven de una clase base (si no lo tienes así). 2) Tienes la tabla de CLIENTE con sus campos. 3) Tienes la pieza que te "convierte" un elemento de Entidad-Relacion a un Objeto persistente. A esta clase, a mi entender, le falta información. Está claro que el resultado de la ejecución (en tu caso) debe ser un objeto TCliente. De alguna forma esta función debe llegar a conocer la referencia a la clase TCliente, de forma que el objeto que se cree no sea utilizando TObject sino la referencia a esa clase.
http://docwiki.embarcadero.com/RADSt...ass_References
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#2
|
|||
|
|||
|
Muchas gracias por todas las respuestas.
Quiero comentarles que defino en archivo .pas las clases que defino, por ejemplo: Modelo_Cliente.pas. Aquí defino las clase TCliente. en otro archivo .pas llamado Cx_Cliente, defino funciones que me devuelvan valores consultando la base de datos, por ejemplo:
tambien tengo procedimientos almacenados de sql que lo invoco de esta manera:
este procedimiento lo repito para cualquier tabla por ejemplo para las ventas tengo una clase TVenta guardado en un archivo Modelo_Venta, ademas de los procedimientos y funciones en un archivo Cx_Venta donde me conecto a la base de datos y hago consultas y modificaciones a la tabla venta. Lo que quiero hacer es lo mismo pero un solo archivo donde pueda invocar los valores de cualquier tabla, es decir si es Cliente, Venta, etc, pero usando los objetos pertinentes. entonces hago un GetObject(Id: integer; TableName: String): TObject; y me devuelve un objecto de tipo TObject. quiero volver agradecer por su tiempo y ojala me puedan ayudar a realizar esta operación, que me ahorraría muchas lineas de código al hacer cualquier proyecto. Saludos, Javier Villa. |
|
#3
|
||||
|
||||
|
Cita:
Lo ideal sería que tuvieras un objeto que defina cada objeto de clase, Modelo_Cliente.pas (TCliente), Modelo_Venta.pas (TVenta),... y que tal como dices, puedas tener centralizado en un único lugar el procedimiento que recupera los campos de una tabla en el objeto correspondiente. Tal como lo tienes ahora, el problema es que, debes tener en algún sitio la correlación entre los campos de la tabla y las propiedades de cada objeto. como no la tienes en ningún sitio, implementas un procedimiento por cada una de esas parejas (Cx_Cliente, Cx_Venta,...). Creo que puedes conseguir eso, en la propia clase TCliente, TVenta,... utilizando RTTI y atributos. De esa forma en un único lugar (procedimiento/función) podrás cargar los campos de la tabla en el objeto relacionado. Sería algo así:
El procedmiento:
Definido en la clase base (TBaseObject) debería poder acceder al atributo de cada clase (AttTableName) para conocer la tabla, y a las propiedades published del objeto vía RTTI. Para cada propiedad puedes conocer su atributo (AttrFieldName) para acceder al campo. De esta forma, podrías utilizar:
Bueno, más o menos esa es la idea. No se si me he explicado bien. Tienes información sobre cómo definir atributos aquí: http://docwiki.embarcadero.com/RADSt...tom_Attributes Cómo acceder a ellos en runtime: http://docwiki.embarcadero.com/RADSt...es_at_Run_Time
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Usando RTTI para devolver lista de eventos | elrayo76 | Varios | 13 | 03-06-2016 08:34:57 |
| Recuperación información a través de RTTI | jocaro | Varios | 15 | 10-05-2016 08:18:00 |
| Error en funcion usando stdcall | Ramsay | Varios | 2 | 11-03-2016 02:45:55 |
| Herencia externa de componentes (BPL)(RTTI) | jednavlop | OOP | 4 | 05-11-2010 18:37:14 |
| Acceder al objeto asociado a una prop. (RTTI) | Neftali [Germán.Estévez] | Trucos | 0 | 30-05-2007 13:39:22 |
|