Está en la página 1de 5

Maestro Detalle en dos DatagridView en VB .

NET 2005 con SQL


Server

Para llevar a cabo una relación maestro detalle entre dos


tablas dentro de dos DataGridView, se debe de construir un DataSet, luego utilizar distintos objetos
DataAdapter para rellenarlo con las dos tablas. Como hemos visto en anteriores ejemplos, para
mostrar datos en un DataGridView, se debe de asignar el DataSet a su propiedad DataSource, y el
nombre de la tabla a mostrar en la propiedad DataMember. Podemos separar la visualización de las
tablas maestro y detalle en dos DataGrid independientes. Para sincronizar ambos controles,
debemos asignar al que actuará como detalle, una cadena con el nombre de la tabla maestra, junto
con el nombre de la relación, empleando el siguiente formato: TablaMaestra.Relación.
Crearemos un proyecto que se denominara WAccesoDatos, las tablas a mostrar serán Customers
(maestro) y Orders (detalle) de la BD Northwind. Una vez creado el nuevo proyecto en VB .NET,
importaremos los espacio de nombres y declararemos a nivel de clase un conjunto de variables.
Veamos la siguientefigura.

Variables declaradas

Para ver el uso de los objetos DataAdapter y DataSet dentro de los controles DataGrid vamos a crear
un formulario y lo llamaremos frmMaestroDetalle, luego agregamos los siguientes controles.
Una vez realizado el llenado de todos los controles dentro del formulario, el frmMaestroDetalle debe
de quedar como la siguiente figura.

Formulario frmMaestroDetalle

En el evento Load del formulario se realizara la creación de la relación entre tablas y asignación a
los DataGrids (maestro - detalle). Aparte de la creación correspondiente de los objetos de conexión,
adaptador, etc., Dentro del evento Click del DataGridDetalle se codificara la parte donde debe de
mostrar el total de las ordenes (detalle). A continuación en la siguiente figura se muestra la
codificación.
Código del evento load y click del frmMaestroDetalle

Una vez realizada toda la codificación se pasa a ejecutar el formulario, y debe de mostrarse como en
la Fig. 51.
Formulario ejecutable frmMaestroDetalle

PD:

 Después de crear el proyecto "WAccesoDatos", debemos de agregar las Referencias para


poder acceder a los Datos, las cuales son "Microsoft ActiveX Data Objects 2.8 Library".
 No olvidar que en la línea de código de conexión: "Server=Srv01;database=Northwind; User
Id=sa"

 En la parte donde se encuentra el nombre del Server, debe de ir el nombre de tu servidor de


base de datos en este caso, el mío es "Srv01".
 Para poder cambiar los datos del "EmployeeID" por los "Nombres del Empleado" (dentro
del Grid Tabla Detalle), realizar la siguiente modificación dentro del evento "Load" del
"frmGridTablas" debajo del "SqlDataAdapter" de "Customers" (SELECT * FROM
Customers), reemplazar la consulta del "SqlDataAdapter" de "Orders" por el que se muestra
continuación:

Dor = New SqlDataAdapter("SELECT O.OrderID, O.CustomerID, " + _

"E.Lastname + ' ' + E.Firstname as Empleado, " + _

"O.OrderDate, O.RequiredDate, O.ShippedDate FROM Orders O, " + _

"Employees E WHERE O.EmployeeID = E.EmployeeID ", Cn)

También podría gustarte