![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
![]() Saludos mis queridos amigos,
Tengo una duda. Quisiera saber, si es posible popular una clase dada, ejemplo :
Bueno la idea es crear un metodo que me cargue los datos en mi clase atendiendo a una consulta, mi campo clave seria el ID. y de ser posible si se le hace una modificacion a cualquiera de los valores de las propiedades de mi clase poder hacer la actualizacion de igual manera. Muchas Gracias.
__________________
El conocimiento es un Patrimonio Universal.... |
#2
|
||||
|
||||
Dado que tienes las propiedades como published, puedes hacer un método del estilo:
NOTA: Como ves te he puesto el los parámetros TBaseClase en lugar de TCliente, ya que creo que para lo que estás haciendo es mejor que Todas tus clases de negocio hereden de una clase base donde poder implementar Métodos y propiedades comunes a todos Volviendo al método. Por un lado puedes recorrer los campos (Fields) del Dataset utilizando métodos como GetFieldsList, GetFieldsNames,... Y para acceder a las propiedades de tu clase puedes utilizar RTTI (Acceder a las propiedades de un componente vía RTTI). Entre unas y otras deberías poder cargar los datos en tu clase.
__________________
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. |
#3
|
|||
|
|||
![]() Gracias Neftali,
Imaginate que mi clase Base es tClientes, este metodo entonces aceptaria como parametro una instancia de mi clase y me la devolveria con los valores obtenidos de la consulta? Perdona mi Ignoracia, pero es que nunca me habia detenido a trabajar con POO y siempre hacia todo crudo. Pero eh pensado en implementar una Clase Generica de Clientes la cual pueda utilizar en cualquier aplicacion que utilize clientes. Espero haberme explicado bien. es Decir imaginemos que mi clase la cargo por medio del ID como seria para llamar el metodo?
Seria algo asi no?
__________________
El conocimiento es un Patrimonio Universal.... |
#4
|
||||
|
||||
Sí perfectamente podría ser así.
Simplemente, que yo ese método CargarDatos lo programaría en la clase Base, para que te sirva para todas las clases; Si lo haces utilizando RTTI, como te he explicado antes, te servirá tanto para TClientes, TProveedores, TMonedas o TCarritoDelHelado. Si quieres prueba a implementarlo en TCliente (ahora te será más sencillo para comenzar), pero debes tener presente que la idea final es Abstraerlo a la Clase Base, para que no tengas que programarlo en todas.
__________________
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. |
#5
|
||||
|
||||
![]() Hola, yo anduve haciendo experimentos en ese aspecto durante mis ratos libres, aqui un ejemplo, espero que le sirva
__________________
nuestro carácter está reflejado en cada línea de código que escribimos. |
#6
|
||||
|
||||
A algo así me refería yo, pero de forma genérica para que sirve para cualquier clase del Modelo.
![]()
__________________
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. |
#7
|
|||
|
|||
HOla, gracias por Responder, eh estado leyendo un poco de POO y ahora eh comprendido muchas cosas. y tengo ciertas ideas de como manejar todo eso de Abstraccion, Polimorfismo, Encapsulamiento etc, Aplicandolo a lo que deseo hacer.
Muchas gracias, cuando tenga algo concreto lo posteare por aqui mismo para que me den su Valiosa opinion. Gracias.
__________________
El conocimiento es un Patrimonio Universal.... |
#8
|
||||
|
||||
Yo tambien pensaba averiguar un metodo asi, pero a la hora de la hora, aunque se ahorra lineas de codigo, se pierde flexibilidad y resulta mejor el meter manos a la obra y escribir el codigo a mano, en todo caso, seria interesante usar alguna herramienta generadora de codigo para el mapeo.
__________________
nuestro carácter está reflejado en cada línea de código que escribimos. |
#9
|
||||
|
||||
Cita:
Cuando llegues a 1180 clases (como tengo yo ahora) y tengas que añadir ese código 1180 veces ya me dirás si te resulta "tan mejor" ir escribiendo código a mana... ![]() ![]() ![]() Dejando eso de banda, meter código "a mano" como tú dices no tiene porqué ser mucho menos flexible (si se hacen las cosas bien) (*). Por otro lado, si se hace bien te aporta estandarización del código, reducción de errores (más reducción cuanto mayor sea el número de clases) y una infinita ganancia de tiempo a la hora de corregir y modificar ese código. (*) Piensa que un método genérico siempre se podrá "sobreescribir" en el caso de que te haga falta. Además no sólo hablamos del método LoadFromDB, sino que a medida que vayas evolucionando en tu programa te aparecerán códigos como InsertarDb, EliminarDB, ClonarObjeto, AssignarObjeto, ExportarObjeto,... Sólo hay que ir multiplicando...
__________________
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. |
#10
|
||||
|
||||
Cita:
1) hacer el codigo del mapeo uno mismo codificandolo "en duro" 2) Utilizar alguna herramienta propia o de terceros que genere el codigo del mapeo, que luego se tendra que compilar, depurar, modificar etc. 3) Utilizar procedimientos que remplace las lineas de codigo del mapeo en en unas cuantas lineas de codigo, generalizando el proceso para futuras aplicaciones. de las 3 me inclino por la primera y en un futuro por la segunda opcion, pero la tercera la descarto ya que mi corta experiencia como programador me ha enseñado que no existen procedimientos salvadores que remplazan lineas de codigo, al fin y si lo hacen de alguna forma, es sacrificando versatilidad y eso es algo que no va con mi estilo. Cita:
__________________
nuestro carácter está reflejado en cada línea de código que escribimos. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Copiar el contenido de un DataSet a otro DataSet | Javi2 | Varios | 84 | 22-11-2024 17:53:08 |
clase que contiene otra clase definida de forma posterior | astwin | OOP | 5 | 20-02-2009 11:26:55 |
Actualizar un dataset desde otro dataset | jafera | Conexión con bases de datos | 17 | 18-12-2008 23:57:10 |
llenar un combo | pzhero | .NET | 3 | 07-06-2004 20:13:35 |
llenar sqlclientdataset | jgutti | Conexión con bases de datos | 5 | 18-12-2003 18:42:35 |
![]() |
|