¿Cómo puedo hacer con ADO en Visual Basic que se muestren los datos de 3 tablas a la vez?

No encuentro solución a mi problema, de momento soluciones parciales. Tengo tres tablas relacionadas. Sectores, tramos y controles (las relaciones están correctamente establecidas). Como puedo hacer con ADO en Visual Basic para mostrar los datos de las tres tablas, cada uno en un datagrid, y que según cambio de registro en Sectores me muestre sus tramos, y según cambie de registro en Tramos me enseñe sus respectivos controles, en access 2000 lo hago sin problemas, pero no se como hacer lo mismo con Visual Basic . Si alguien sabe como hacer esto que por favor me lo responda y a ser posible que me pase un ejemplo de código.

1 Respuesta

Respuesta
1
La solución es sencilla si se conoce, no sé como estás recuperando la información si con un control Data, o manualmente (forma correcta de hacerlo). En cualquier caso, supongo que estás utilizando una conexión ADO, y lo estás realizando todo en una consulta estándar SQL es decir (SELECT * FROM TABLA1 INNER JOIN TABLA2 ON ... etc.).
Para realizar lo que quieres hacer has de usar una SHAPE.
Para poder realizar una SHAPE, has de cambiar el provider de ADO que estés utilizando a "MSDataShape", lo demás de la conexión es + o - igual a la que estuvieras utilizando.
También has de cambiar la sentencia SQL a continuación te pongo una muestra de como sería una.
SHAPE {SELECT * FROM e_GrupoTecnicoDivision} AS GrupoTecnicoDivision
APPEND (( SHAPE {SELECT * FROM e_GrupoTecnicoFamilia WHERE DivisionID = ?} AS GrupoTecnicoFamilia
APPEND ({SELECT * FROM e_GrupoTecnicoSubFamilia WHERE FamiliaID = ?} AS GrupoTecnicoSubFamilia
RELATE 'FamiliaID' TO PARAMETER 0) AS GrupoTecnicoSubFamilia) AS GrupoTecnicoFamilia
RELATE 'DivisionID' TO PARAMETER 0) AS GrupoTecnicoFamilia
En este ejemplo hay tres tablas
e_GrupoTecnicoDivision
E_GrupoTecnicoFamilia (Familias de una división relacionadas por el campo DivisionID)
E_GrupoTecnicoSubFamilia (SubFamilias de una Familia relacionadas por el campo FamiliaID)
Cuando obtengas el recordset "oRS1" este contendrá todos los registros de la tabla e_GrupoTecnicoDivision y asocias el recorset a la primera grid.
A otra variable recordset "oRS2", le asocias el campo "GrupoTecnicoFamilia" del primer recordset (que será un campo de tipo recordset)
Set oRS2=oRS1.Fields("GrupoTecnicoFamilia").Value
y asocias a la segunda Grid el recordset oRS2
y por último a una tercera variable "oRS3", asocias el campo "GrupoTecnicoSubFamilia" del segundo recordset
Set oRS3=oRS2.Fields("GrupoTecnicoSubFamilia").Value y asocias este último a la tercera grid. y obtendrás el resultado que buscas.
Resumiendo, tienes que utilizar una conexión de tipo SHAPE, si te pierdes buscan en la ayuda de VB. Puedes crear la sentencia SQL desde VB si añades un DataEnviroment añades un comando (tabla1) y sobre esta tabla añades un comando Secundario (tabla2), y sigues los pasos del diseñador. Cuando tengas añadidas todas las tablas, te posicionas en la primera, botón derecho, info de jerarquía y te muestra la sentencia SQL.
Espero haberte ayudado, siento no poder poner un ejemplo de código, pero ahora no tenía ninguna a mano.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas