none
Poblar un DataGridView con un DataSet con criterio seleccionado en un ComboBox poblado con otro DataSet (SQL ORDER BY) RRS feed

  • Pregunta

  • Hola comunidad, mi consulta es sencilla, la paso a describir y agradezco de antemano cualquier ayuda:

    Tengo una base de datos llamada "Prueba" con dos tablas con los sgtes. nombres: "Personas" y "Categorias".

    La tabla "Personas" tiene los siguientes campos: "Apellidos", "Nombres", "Direccion", "Comuna" y "Cuidad", la cual esta poblada de datos en cada uno de sus campos.

    La tabla "Categorias" contiene un solo campo llamado "Categorias" con los nombres de cada campo de la tabla "Personas", es decir "Apellidos", "Nombres", "Direccion", "Comuna" y "Cuidad".

    La interface gráfica del mi Formulario solo tiene un DataGridView y un ComboBox.

    El DatagridView se puebla con una consulta sql SELECT * FROM a la base tabla "Personas" en el evento Form1_Load. De igual forma en el mismo evento se carga el ComboBox con una consulta a la tabla "Categorias".

    Hasta aquí todo bien.

    Lo que se busca es lo siguiente (y no me funciona):

    Que el "DataGridView" se refresque ordenado según el item seleccionado en el "ComboBox" con la consulta SQL ORDER BY '" & Me.ComboBox1.Text & "' a la tabla "Personas" en el evento ComboBox1_SelectedIndexChanged

    Claro estoy que haciendo "click" en las cabeceras de columna del DataGridView ordena, pero es capricho del demandante que lo haga por medio de un "ComboBox".

    He aquí el código del Form1_Load y del ComboBox1_SelectedIndexChanged y queda mas claro:

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim tabla As New DataSet
            conexion1.ConnectionString = "Provider=Microsoft.Ace.OLEDB.12.0; Data Source=" & Application.StartupPath & "\Prueba.accdb"
            conexion1.Open()
            Dim adaptadorDGB As New OleDb.OleDbDataAdapter("Select * from Personas", conexion1)
            adaptadorDGB.Fill(tabla, "prueba")
            
            Me.DataGridView1.DataSource = tabla
            Me.DataGridView1.DataMember = "prueba"

            adaptadorDGB.SelectCommand.CommandText = "Select * from Categorias"
            adaptadorDGB.Fill(tabla, "tblcb")

            Me.ComboBox1.DataSource = tabla.Tables("tblcb")
            Me.ComboBox1.DisplayMember = "Categorias"
            Me.ComboBox1.ValueMember = "Categorias"
            adaptadorDGB = Nothing
            tabla = Nothing
            conexion1.Close()

        End Sub

        Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
            Dim tablaCB As New DataSet
            conexion2.ConnectionString = "Provider=Microsoft.Ace.OLEDB.12.0; Data Source=" & Application.StartupPath & "\Prueba.accdb"
            conexion2.Open()
            Dim adaptadorCB As New OleDb.OleDbDataAdapter("Select * from Personas order by '" & Me.ComboBox1.Text & "'", conexion2)
            adaptadorCB.Fill(tablaCB, "combo")

            Me.DataGridView1.DataSource = tablaCB
            Me.DataGridView1.DataMember = "combo"
            Me.DataGridView1.Refresh()
            adaptadorCB = Nothing
            conexion2.Close()
        End Sub

    Se agradece de antemano toda ayuda

    miércoles, 13 de noviembre de 2013 4:14