C sharp - Que un trabitu de un objeto guarde otro objeto...

 
Vista:

Que un trabitu de un objeto guarde otro objeto...

Publicado por zone (3 intervenciones) el 12/07/2009 01:30:25
Hola, como estan!
Recien empeizo en este lenguaje, me enseñaron algo en la facultad pero dejo mucho que desear.
Voy a tratar de ser lo mas claro posible en mi problema.

Tendo 2 objetos, uno es "Clientes" y otro "Productos".
Ambos objetos tienen metodos que permiten llenar sus atributos, como "Nombre", "Domicilio", etc. y guarda estos datos en una base de datos Access. Eso funciona perfectamente.

Mi problema es que quiero que cada Cliente, tenga guardados cuantos y que productos ah comprado.
Se entiende?

Pero no se ni como empezar con esto, ni como guardarlo en la base de datos.
Espero puedan ayudarme, muchisimas gracias!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Que un trabitu de un objeto guarde otro objeto.

Publicado por m (97 intervenciones) el 12/07/2009 06:15:43
Pues,
primero agrega dost tablas a tu base de datos,
Ordenes y lineas de ordenes.
Tabla:Ordenes [OrdenID es la llave primaria]
[OrdenID], [ClienteID],[SubTotal],[DescuentoTotal],[TotalAPagar],[FechaCompra]

La tabla ordenes linea tiene una lista detallada (por producto) de cada orden.
Tabla:LineasDeOrden [OrdenLine y OrdenID es la llave primaria]

[OrdenID],[OrdenLienaID],[Producto],[PrecioInicial],[Descuento],[PrecioTotal]

genera los metodos para insertar/actualizar Ordenes y lineas.
---------------

Explicacion por cada compra de cada cliente tu tienes una orden,
esa orden puede tener firentes productos por eso se crea una tabla extra
que es Ordenes Linea y tiene cada uno de los productos en cada compra.
ahora supongamos que en la tabla productos se tiene el precio de cada
producto, y sin embargo este valor lo incluimos en la tabla debido a que el precio
puede variar pero una vez echa la compra guardamos el precio actual, si tiene
descuento y su precio final. En caso de que no necesites esta informacion puedes
eliminar los campos.

Saludos y espero esto te de una idea de lo que debes hacer.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Que un trabitu de un objeto guarde otro objeto.

Publicado por zone (3 intervenciones) el 12/07/2009 06:46:32
Si! Creo que ahora entiendo.
Creo una tabla que tenga los campos, precio, cantidad, producto.
En precio pongo el precio al que vendi, en cantidad cuantos productos fueron comprados y producto, el nombre del producto.

Luego en la Tabla Producto, debo restar uno al stock del producto que vendi.
Me salvaste!! Era muy sencillo en realidad!!

Ahora una pregunta, cuando mi profesor en la facultad me explicaba, me dijo que todo esto debia hacerse con coleccion o vectores. Tienes idea que me quiso decir??
Muchisimas gracias!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Que un trabitu de un objeto guarde otro objeto.

Publicado por m (97 intervenciones) el 12/07/2009 23:04:29
Mas o menos.
Tu profesor hizo referencia a la hora de que llamas a las entidades o
clases en tu codigo, es decir la parte de codigo que maneja
la relacion entre la conexion de los datos y la interfaz de usuario.

supon que declaras una clase para cada 'entidad' que representan las tablas

[Lo siguiente es pseudo codigo]

Clase OrdenLinea
{
//propiedades
OrdenID, LineaID, Cantidad, Precio
//Metodos
guarda(); //guarda o actualiza una linea
carga();
.
.
.
}

Clase Orden
{
//propiedaes
OrdenID,ClienteID, Total, Fecha, productos {List<OrdenLinea>}

//metodos
guarda();//guarda o
}

Clase Cliente
{
ClienteID, Ordenes{ List<Ordenes>}
}

Un vector, es solo un arreglo, una lista, una coleccion de elementos.

Siguiendo una jerarquia a cada, cliente le correspode
una coleccion de Ordenes y a cada Orden le correspone una coleccion de productos.
Por eso a la clase Orden se le agrega la propiedad extra que son la lista de productos que contiene.
Es facil de manejar, que si fureran independientes.

Asi por ejemplo al guardar una orden.

//metodo guarda en la clase Orden
guarda()
{
//primero se guarda la orden en la tabla Ordenes

//segundo cada producto se guarda en la tabla productos
for (i=0;iproductos.Logitud; i++)
{
productos[i].guarda(); //cada producto se guarda de manera individual.
}

}
///Nota: no te confundas si los metodos guarda se llaman igual en las clases producto y Orden son independientes.


Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar