hola, que tal. Estaba realizando una aplicacion en la cual queria hacer uso de las nuevas ventajas que trae el Dataset para la version 2005 del VS.
La verdad esta genial el uso de los TableAdapter, y arma el dataset desde las tablas de forma increible. Pero me encontre con dudas al momento de cargar el dataset, mas puntualmente las dudas las tengo con los DataRelation. Tal ves esto se deba a que estoy pensando usarlos de una forma que no es la correcta. A ver paso a explicar un poco lo que pretendo. Resulta que el dataset esta compuesto por cuatro data tables. Con las entidades: Cliente, Factura, Detalle, Producto. Creo que las relaciones estan mas que claras se entra por id de cliente y sale el resto, y como veran esto es para utilizarse en un reporte. Relaciones: Cliente -> Facturas -> Detalles -> Productos. Ahora bien el dataset al arrastar las tablas creo las relaciones perfectamente, pero el problema lo encuentro al momento de realizar el Fill() con el table adapter. Al dataset de Clientes le agregue un parametro para que filtre por el idcliente, y la idea es pasarle este id al momento de hacer el Fill(), y que el resto de las entidades se cargue solas por medio de las relaciones que tiene con al entidad cliente. O sea, seria algo asi: ClienteTableAdapter.Fill(dsReporte.Cliente, <idcliente>); Y con esto solo cargue la tabla relacionada con los cliente en este caso facturas. Aclaracion, la propiedades nested estan en true. Lo raro es que cuando inspecciono el dataset por medio del Dataset Visualizer, solo la entidad cliente esta cargada correctamente, el resto esta vacia. Ahora bien que se me ocurrio, hacer el fiil() a todas las entidades: ClienteTableAdapter.Fill(dsReporte.Cliente, <idcliente>); FacturaDataAdapter.Fill(dsReport.Facturas) FacturasDetalles.Fil(ds.FacturaDetalles) Productos.Fill(ds.Productos) Pense que de esta forma, explicito la carga y por la relaciones solo carga lo necesario, pero inspeccionando las entidades se estan cargado toda la base de datos, sin filtro alguno. Algo por lo visto estoy haciando mal, o utilizandolo mal. Buscando en internet, encontre que hay una propiedad GetChildRows(), que me permite navegar por las relaciones, pero en este caso lo que quiero es llenar las entidades en base a las relaciones no recorrerlas. Otra forma que se me ocurrio realizar es agregar parametros de filtro a cada entidad, pero la verdad es bastante molesto esto ultimo, quedaria algo asi como: ClienteTableAdapter.Fill(dsReporte.Cliente, <idcliente>); FacturaDataAdapter.Fill(dsReport.Facturas, dsReporte.Cliente.Rows[0].idCliente) FacturasDetalles.Fil(ds.FacturaDetalles, dsReporte.Facturas.Rows[0].idFactura) Productos.Fill(ds.Productos,dsReporte.FacturaDetalle.Rows[0].idDetalle ) Igualmente esto ultimo no me cierra del todo ya que como veran esto accediendo al indice cero de las filas, y las facturas son una coleccion, al igual que los detalles, esto estaria mal, pero no veo como hacerlo de otra forma. Salvo que a las facturas le haga un foreach y un Fill que agregue a la entidad, pero esto si que se complica. Bueno me extendi bastante, espero que me explicara bien, y bueno cualquier sugerencia sera de ayuda. Gracias. __________________________________________________ Correo Yahoo! Espacio para todos tus mensajes, antivirus y antispam ¡gratis! ¡Abrí tu cuenta ya! - http://correo.yahoo.com.ar