Buscar en Google

Busca en Todo Vb-Net

Búsqueda personalizada

miércoles, 2 de junio de 2010

ComboBox Dependientes [VB.Net]


Añadir un dataset a un ComboBox [VB.Net]

Para el ejemplo se usaran datos extraidos desde una BD MySQL
La tematica del ejemplo es simple, siempre con la misma filosofia añadir dataset a un combo luego realizar indexacion para realizar una neva busqueda y alimentar un nuevo dataset el cual sera asignado a su vez a otro combo.


espacios de nombres a importar

Imports MySql.Data.MySqlClient

Declaraciones

Public AdapterCats As MySqlDataAdapter
Public AdapterSubCats As MySqlDataAdapter
Public CDatasetCats As DataSet
Public CDatasetSubCats As DataSet

' Primero en el evento load del formulario hacemos el llenado del Combo categorias

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Try

AdapterCats = New MySqlDataAdapter("SELECT CATEGORIA, NOMBRE FROM.CATEGORIA", MyConex)

CDatasetCats = New DataSet()
MyConex.Open()
AdapterCats.Fill(CDatasetCats, "CATS")
MyConex.Close()

CmbCategoria.DataSource = CDatasetCats.Tables("CATS")
CmbCategoria.DisplayMember = CDatasetCats.Tables("CATS").Columns("NOMBRE").ToString
CmbCategoria.ValueMember = CDatasetCats.Tables("CATS").Columns("CATEGORIA").ToString


Catch oexcep As MySqlException
MessageBox.Show("Error al conectar con BD o actualizar, Proceso: Consultando datos " & _
ControlChars.CrLf & _
oexcep.Message & ControlChars.CrLf)
MyConex.Close()
End Try

End Sub



Luego en el evento de cambio de indice del combo hacemos el llenado del la subcategorias, recordemos que una categoria puede tener 'n' subcategorias


Private Sub CmbCategoria_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmbCategoria.SelectedIndexChanged
Dim CatBuscar As String
CatBuscar = CDatasetCats.Tables("CATS").Rows(CmbCategoria.SelectedIndex)("CATEGORIA")
Try

AdapterSubCats = New MySqlDataAdapter("SELECT SUBCAT, NOMBRE FROM " & BaseDatos & ".SUBCATEGORIA WHERE CATEGORIA = '" & CatBuscar & "'", MyConex)

CDatasetSubCats = New DataSet()
MyConex.Open()
AdapterSubCats.Fill(CDatasetSubCats, "SUBCATS")
MyConex.Close()


CmbSubcategoria.DataSource = CDatasetSubCats.Tables("SUBCATS")
CmbSubcategoria.DisplayMember = CDatasetSubCats.Tables("SUBCATS").Columns("NOMBRE").ToString
CmbSubcategoria.ValueMember = CDatasetSubCats.Tables("SUBCATS").Columns("SUBCAT").ToString

Catch oexcep As MySqlException
MessageBox.Show("Error al conectar con BD o actualizar, Proceso: Consultando datos " & _
ControlChars.CrLf & _
oexcep.Message & ControlChars.CrLf)
MyConex.Close()
End Try
End Sub




Esto ha sido todooooooo... dudas o comentarios a cesarlopez1909@gmail.com

3 comentarios:

  1. Muchas gracias de verdad agradezco mucho tu tiempo por subir este ejemplo.

    ResponderEliminar
  2. hola ,tengo una duda en cuanto al codigo..me parecio muy util,use base de datos sql server 2008 y vb .net 2010. El tema es que me muestra los dos combos a la ves..y si selecciono el primero no se modifica nada el segundo... mi caso es que tengo dos tablas ..localidad y barrio..es decir q segun la localidad te muestra los barrios de esa localidad. pero cuando lo ejecuto al programa me muestra los dos combos a la ves,como si no estuviera filtrando para el segundo combo.Te podria mandar el codigo asi lo veas? muchas gracias desde ya.Saludos.

    ResponderEliminar