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,

Comments

# re: Establecer una vista Maestro Detalle, entre dos Tablas

Sunday, December 20, 2009 7:35 PM by svildoso

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

# re: Establecer una vista Maestro Detalle, entre dos Tablas

Monday, December 21, 2009 1:50 AM by peplluis

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,

# re: Establecer una vista Maestro Detalle, entre dos Tablas

Saturday, June 12, 2010 8:34 PM by Daniel Garay

.

excelente aporte, al menos para los que no tenemos tiempo de andar leyendo toda la documentacion de cada clase de Frame .NET

gracias

# re: Establecer una vista Maestro Detalle, entre dos Tablas

Tuesday, July 13, 2010 1:02 PM by Zake

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

# re: Establecer una vista Maestro Detalle, entre dos Tablas

Monday, August 30, 2010 11:06 AM by peplluis

# re: Establecer una vista Maestro Detalle, entre dos Tablas

Friday, November 18, 2011 5:56 PM by leonardo

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

# re: Establecer una vista Maestro Detalle, entre dos Tablas

Sunday, November 27, 2011 3:58 AM by peplluis

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,

Leave a Comment

(required) 
(required) 
(optional)
(required) 
If you can't read this number refresh your screen
Enter the numbers above: