Establecer una vista Maestro Detalle, entre dos Tablas

Más respuestas… a la pregunta:


>> Hola el ejemplo Dos Tablas y sus relaciones en un DataGridView a traves de un ‘ComboBoxColumn’ estuvo muy bueno pero quería saber cómo hago si solamente quiero mostrar los 2 DataTables tipo maestro detalle en el DataGridView.


VistaDetalle



‘ Simular tabla con los Id’s Maestros



Dim Maestros As New DataTable(“Maestro”)


Maestros.Columns.Add(“Cliente”)


Maestros.Columns.Add(“Nombre”)


Maestros.Rows.Add(“001”, “Jose Javier Garcia”)


Maestros.Rows.Add(“002”, “Jhon Smith Carter”)


Maestros.Rows.Add(“003”, “Pierre Bertran Janvier”)


Maestros.Rows.Add(“004”, “Jose Di Souza”)



‘ Simular tabla con los Detalles



Dim Detalles As New DataTable(“Detalle”)


Detalles.Columns.Add(“Cliente”)


Detalles.Columns.Add(“Pedido”)


Detalles.Columns.Add(“Fecha”)


Detalles.Columns.Add(“Importe”)


Detalles.Rows.Add(“001”, “F164533″, “22/01/2006″, “1,111.11”)


Detalles.Rows.Add(“001”, “A163453″, “22/02/2007″, “2,123.23”)


Detalles.Rows.Add(“003”, “ZP12343″, “22/03/2008″, “3,456.34”)


Detalles.Rows.Add(“004”, “PDF2333″, “22/05/2009″, “4,452.22”)


Detalles.Rows.Add(“001”, “CRF5453″, “22/06/2009″, “1,223.33”)


Detalles.Rows.Add(“002”, “MFF6763″, “22/07/2009″, “1,234.32”)


Detalles.Rows.Add(“002”, “VRF4683″, “22/08/2009″, “2,123.54”)


Detalles.Rows.Add(“004”, “ZRF7933″, “22/09/2009″, “1,203.00”)



‘ Construir el DS y establecer relaciones



Dim MiDataSet As New DataSet


MiDataSet.Tables.Add(Detalles)


MiDataSet.Tables.Add(Maestros)


MiDataSet.Relations.Add(“Fk”, _


MiDataSet.Tables(“Maestro”).Columns(“Cliente”), _


MiDataSet.Tables(“Detalle”).Columns(“Cliente”))



‘ Contructores para los Bingdings



Dim MaestroBindingSource As New BindingSource


Dim DetalleBindingSource As New BindingSource



‘ Binding del “Maestro”



MaestroBindingSource.DataMember = “Maestro”


MaestroBindingSource.DataSource = MiDataSet



‘ Enlace del detalle entre la relacion “Fk” y el Maestro



DetalleBindingSource.DataMember = “Fk”


DetalleBindingSource.DataSource = MaestroBindingSource



‘Asignar los binding source Maestro y Detalle a su DGV


Me.DataGridView1.DataSource = MaestroBindingSource


Me.DataGridView2.DataSource = DetalleBindingSource



Para probar este ejemplo solo es necesario crear una nueva solución “Windows Forms”, añadir dos DataGridView al Form1 y en el evento “Form Load” añadir el código adjunto. Puedes hacer lo mismo utilizando un ‘combo’ aunque he preferido dos DataGridView por simplicidad.


Espero os sea útil,
Pep Lluis,

9 thoughts on “Establecer una vista Maestro Detalle, entre dos Tablas”

  1. una gran aporte, gracias por escribir estos tips que para muchos como yo son un gran avance en el desarrollo y a la vez nuevos conocimientos.

    nuevamente gracias por vuestro aporte.

    svildoso

  2. Todo lo contrario :-)
    Gracias a vosotros, por permitirme compartir con vosotros mis pequeños conocimientos. Sin duda vuestros comentarios dan razon de ser a este blog.

    Saludos,
    Pep Lluis,

  3. ES PERFECTO PERO ME GUSTARIA SABER COMO LE PUEDO HACER PARA PONER 3 DATAGRINDVIEW

    LO QUE PASA TENGO QUE ENTREGAR UN POGRAMA PARA MI ESCUELA Y QUIERO SOBER COMO

    ES ALGO SIMILAR COMO EL MAESTRO DETALLE PERO CON TRES DATAGRINVIEW ES JEPLO PARA UNA TIENDA

    UN MAESTRO, UN DETALLE Y UN TERCERO ….

    idcategoria QUE ES EL MAESTRO
    dulces
    lacteos
    perfumes

    idcategoria, articulo que es el detalle
    lacteos jamon
    lacteos queso
    lacteos salchicha

    idcategoria, articulo,medidas,precio eseltercer
    lacteos jamon 1kg $10
    lacteos jamon 5kg $45

    me gustaria saber como le puedo hacer para tener algo asi …..

    me gustaria poder contar con su ayuda

    espero su respuesta

    me gustaria recivir su respuesta en mi correo electronico http://www.dan.com.mx@hotmail.com

  4. Hola Pep esta bueno el aporte, tengo una pregunta, como se realizaria la busqueda en la base de datos y se asignaria en windows form maestro detalle?

    Gracias

  5. hola b uenas tardes oye necesito llenar un DataGridView pero con un adodb en visual basic 2008
    pd = “SELECT * FROM producto”
    rs = cnn.Execute(pd)
    lin = DataGridView1.RowCount
    Do While Not rs.EOF
    DataGridView1.Rows.Add(rs.Fields(“id”).Value, rs.Fields(“nombre”).Value)
    lin = lin + 1
    Loop

    pero me llena con lo mismo siempre

  6. Hola Leonardo,
    Primeramente deberias utilizar la propiedad ‘DataSouce’ del DataGridView para enlazar los datos, y te llena con lo mismo porque aparentemente siempre realizas la misma query “Select * FROM producto”… faltaria un where con lo que necesitaas seleccionar.

    Saludos,

  7. Saludos, gracias por el aporte, una pregunta en mi caso quiero llenar un DGV desde el código. ahorita tengo un msgbox y en lugar de ese quiero agregarlos a un DGV, ejemplo

    For n = 1 To m
    P1 = a * Xo + c
    Xn = P1 Mod m
    Rn = Xn / m
    MsgBox(n.ToString +” “+ Xn.ToString . . . .)
    Next

    que la DGV se valla llenando mientras corre el For.

    Gracias por sus aportaciones son de mucha ayuda

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>