Cursos subvencionados para trabajadores
Realiza el curso gratis a través de tu empresa.
Cursos SubvencionadosEn ejercicios anteriores hemos visto como trabajar con dos DataTable en un DataSet aplicando una relación entre ellas. Veamos como realizar la misma operación pero esta vez con un origen de datos. Es decir, rellenaremos dos DataTable con datos de una base de datos, crearemos una relación y mostraremos a partir de la tabla padre, los registros que de la tabla hijo que coincidan con la relación.
Como siempre trabajaremos con la base de datos Northwind y con las tablas Territories y Region.
Nuestro DataSet una vez configurado tendrá dos DataTables, tal y como indica la siguiente figura:

Estas dos tablas se encuentra relacionadas por el campo RegionID, el objetivo del ejercicio es mostrar para cada región los territorios relacionados, como puedes ver en la figura que muestra el resultado, para más comodidad he puesto el resultado en tres columnas, cuando pruebes el ejercicio en tu pc, veras todo en una única columna:

Default.aspx.vb

Puedes ver que los pasos son los mismos que en el ejercicio anterior, sólo que creando más objetos para controlar la segunda consulta. Por último la relación se configura exactamente igual (no podía ser de otro modo) que en el ejercicio de los proveedores y elementos:

Simplemente hemos añadido una relación a nuestro DataSet, indicando el nombre de la relación, la clave principal del DataTable Regiones y la clave foránea de la tabla Territorios. Recuerda que aquí se utilizan los nombres de los DataTable que no tienen que coincidir con el nombre de las tablas en la base de datos, como es este caso. Pero es muy frecuente encontrar que los DataTable se nombran igual que las tablas de la base de datos. Aquí los hemos llamado de diferente modo para aclarar que no son las tablas de la base de datos con lo que estamos trabajando, sino con los DataTable.
Con los conocimientos adquiridos en la unidad donde hemos aprendido SQL, puedes hacerte la siguiente pregunta.
Si las tablas se encuentran relacionadas ya en la base de datos, ¿Porqué no puedo hacer una única consulta con INNER JOIN y llenar un único DataTable, ahorrándome así la creación de relaciones?
Si te has hecho esta pregunta, enhorabuena, tienes toda la razón, podríamos haber hecho lo mismo con una única consulta aprovechando la relación existente entre las dos tablas en la base de datos.
Hemos realizado el ejercicio de este modo para que puedas comprobar como enlazar DataTables en un DataSet. Ahora imagina, que quieres hacer la relación entre dos tablas, con la diferencia que una se encuentra en SQL Server 2005 y la otra en Access. Ahora no hay posibilidad de hacer ninguna consulta única. Pero podríamos realizar esta relación tal y como hemos visto en el ejercicio, incluso si las tablas pertenecen a distintas bases de datos, o más complicado todavía, si las tablas pertenecen a diferentes proveedores.
|
Aquí queda demostrado plenamente la independencia de los DataSet con el origen de datos, incluso podemos trabajar con diferentes proveedores, el abanico de posibilidades se abre considerablemente con esta característica. |
Supongamos que en el ejercicio anterior la tabla Regiones se encuentra en una base de datos de Access, veamos la pocos cambios que deberíamos hacer en nuestro código:

A partir de aquí el código sería el mismo que en el ejercicio anterior, simplemente hemos añadido el espacio de nombres para trabajar con el proveedor OleDB y los objetos específicos para trabajar con este proveedor, en vez de con SQL Server y acceder así a la tabla Region alojada en Access.
Inscríbete ahora y accede a 3 unidades gratis
Evalua el curso de ASP NET Avanzado y accede a las 3 unidades gratis con acceso completo al aula virtual donde podrás disfrutar de la inestimable ayuda del tutor y una gran variedad de recursos como videotutoriales, ejercicios resueltos, foros, enlaces, bibliografía, etc....
Copyright 2008© ADRInfor S.L. Logroño | Tel: 941250116 Fax: 941236805 | Email | Politica de Privacidad