none
Filtrado de ListBox RRS feed

  • Pregunta

  • Tengo las siguientes tablas hechas en Access:

    1) *Id_Marcas  / Marcas

    2) *Id_Modelo / Id_marcas / Modelo / Tipo

    Lo que quiero hacer es, en Visual Basic 2015: Tengo dos ListBox, en el primero (lstMarcas) cargo la tabla 1, en el ListBox2 (lstModelos) Quiero cargar un filtro de datos, teniendo en cuenta la marca seleccionada en el lstmarcas...

    La cuestión es.. cómo puedo hacer?? He intentado de varias formas y no he podido hacerlo..

    Desde ya, muchas gracias...

    jueves, 16 de febrero de 2017 21:59

Respuestas

  • Hola Ferchivilcoy,

    ¿Qué lenguaje estás utilizando, C# o Vb.Net ?

    Una vez cargado el ListBox1 usarías el evento SelectedIndexChanged para filtrar los valores enviando el valor. seleccionado.

    Ejemplo VB.net:

    - Suponiento que el id de la marca es entero y el ValueMember es el campo 'Id_Marcas' :

    lstMarcas.DataSource = dt 'Algún DataTable 
    lstMarcas.DisplayMember = "Marcas"
    lstMarcas.ValueMember = "Id_Marcas"

    Tendrías que hacer algo como :

    Private Sub lstMarcas_SelectedIndexChanged(sender As Object, e As EventArgs)
       'Enviamos el id de la marca convertido a int
      cargarModelosByMarca(Convert.ToInt32(CType(sender, ListBox).SelectedValue))
    End Sub

    Y el método : 

    Private Sub cargarModelosByMarca(ByVal idMarca As Integer)
        Try
            Using con As New OleDbConnection("MiCadenaConexion")
                Dim query As String = "Select Id_Modelo, Modelo from Marcas where Id_marcas = ?"
                Dim adap As New OleDbDataAdapter(query, con)
    
                'Enviamos el parámetros
                adap.SelectCommand.Parameters.AddWithValue("@idMarca", idMarca)
    
                Dim dt As New DataTable()
    
                adap.Fill(dt)'Cargamos el resultado al DataTable
                'Cargamos el lstModelos
                lstModelos.DataSource = dt
                lstModelos.DisplayMember = "Modelo"
                lstModelos.ValueMember = "Id_Modelo"
            End Using
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub


    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI




    jueves, 16 de febrero de 2017 22:17

Todas las respuestas

  • Hola Ferchivilcoy,

    ¿Qué lenguaje estás utilizando, C# o Vb.Net ?

    Una vez cargado el ListBox1 usarías el evento SelectedIndexChanged para filtrar los valores enviando el valor. seleccionado.

    Ejemplo VB.net:

    - Suponiento que el id de la marca es entero y el ValueMember es el campo 'Id_Marcas' :

    lstMarcas.DataSource = dt 'Algún DataTable 
    lstMarcas.DisplayMember = "Marcas"
    lstMarcas.ValueMember = "Id_Marcas"

    Tendrías que hacer algo como :

    Private Sub lstMarcas_SelectedIndexChanged(sender As Object, e As EventArgs)
       'Enviamos el id de la marca convertido a int
      cargarModelosByMarca(Convert.ToInt32(CType(sender, ListBox).SelectedValue))
    End Sub

    Y el método : 

    Private Sub cargarModelosByMarca(ByVal idMarca As Integer)
        Try
            Using con As New OleDbConnection("MiCadenaConexion")
                Dim query As String = "Select Id_Modelo, Modelo from Marcas where Id_marcas = ?"
                Dim adap As New OleDbDataAdapter(query, con)
    
                'Enviamos el parámetros
                adap.SelectCommand.Parameters.AddWithValue("@idMarca", idMarca)
    
                Dim dt As New DataTable()
    
                adap.Fill(dt)'Cargamos el resultado al DataTable
                'Cargamos el lstModelos
                lstModelos.DataSource = dt
                lstModelos.DisplayMember = "Modelo"
                lstModelos.ValueMember = "Id_Modelo"
            End Using
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub


    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI




    jueves, 16 de febrero de 2017 22:17
  • Uso vb.Net 2015.. me gustaría adaptar tu respuesta en C# a visual basic 2015.. se podrá ?
    jueves, 16 de febrero de 2017 22:23
  • Uso vb.Net 2015.. me gustaría adaptar tu respuesta en C# a visual basic 2015.. se podrá ?

    Hola Ferchivilcoy,

    Ya edite el ejemplo cambiando al lenguaje Vb.Net, procura mencionarlo en posteriores preguntas para no tener inconvenientes.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    jueves, 16 de febrero de 2017 22:30
  • Muchas gracias !! Y más por responder tan rápido... Pido disculpas por no haber aclarado de antemano en que lenguaje lo estaba haciendo..

    Me sirvió completamente !

    jueves, 16 de febrero de 2017 22:52