Abrir datos según lo seleccionado en un List

Hola, espero que me puedas ayudar y que se entienda mi duda.
Tengo un Form(1) donde cargo datos a una Tabla(CARRERA) en otro From(2) voy a tener un List con esos datos cargados (sin yo conocer que datos cargaron)
¿Cómo puedo abrir datos desde otra tabla(MATERIAS) dependiendo que este seleccionado en el List?
Para ejemplificar: Supongamos que el list tiene dos campos (Abogacía, Contador) si se selecciona Abogacía abre una tabla si selecciona Contador abre otra.
¿Debo Hacer una consulta Where = a lo que este seleccionado en el List no? ¿Podrías ayudarme y decirme como seria esa sintaxis?
Otra duda que tengo es, ¿cómo guardo en una variable(string) una consulta(un solo campo devuelto)?, por ejemplo hago la consulta que me devuelva el Id_materia de la materia seleccionada en el list.
¿Cómo debería escribir la conuslta, para que a el resultado lo guarde en una variable?
Estoy "trabajando" con Vb6 y SQL 2005.
Desde ya muchas Gracias, cualquier ayuda o consejo es bien recibido.
Saludos

1 Respuesta

Respuesta
1
Antes que nada debes almacenar los "Id" de las CARRERAS en la propiedad "ItemData" [también recuperas el nombre de la carrera obviamente] del ComboBox al momento de recuperarlos, podría ser de la siguiente forma:
Private Sub LlenarLista()
    Dim Cnx As New ADODB.Connection
    Dim Rst As New ADODB.Recordset
    Dim i As Integer
    'realizar la conexion a la BD
    Cnx.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\BD.mdb"
    'recuperar todos los registros de la tabla "Carreras"
    Rst.Open "SELECT Id_Carrera, Carrera FROM Carreras", Cnx, adOpenStatic, adLockPessimistic
    With LstCarreras
        If Rst.RecordCount Then
            For i = 1 To Rst.RecordCount
                'recorrer la tabla y agregar cada campo a la lista
                .AddItem Rst(1).Value
                'añadir el Id al elemento de la lista
                .ItemData(.NewIndex) = Rst(0).Value
                Rst.MoveNext
            Next i
        End If
    End With
End Sub
Con esto realizado ya podemos hacer una sentencia SQL y recuperar las MATERIAS que corresponden a la CARRERA seleccionada en el LstCarreras, esto se hace gracias al Id que almacenamos en ItemData del ComboBox, quedaría así:
With LstCarreras
Sql="SELECT Materia FROM Materias WHERE Id_Materia='" & .ItemData(.ListIndex) & "'"
End With
Con respecto a guardar el resultado de una consulta, lo haces de la siguiente manera:
Por ejemplo, si deseas recuperar el Id de la materia [dependiendo del elemento seleccionado en la lista] y almacenarlo en una variable llamada "MiVariable".
Rst.Open "SELECT Id_Materia FROM Materias WHERE Materia = " & LstMaterias.Text, Cnx, adOpenStatic, adLockPessimistic
If Rst.RecordCount Then
     MiVariable = Rst(0).Value
Endif
Espero puedas solucionar tu situación, en caso contrario no dudes en consultarme de nuevo.
Saludos desde México. Juan Pablo E.P.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas