
Llenar combobox desde Access, Visual Basic 2015
Publicado por DaniM (18 intervenciones) el 21/01/2017 14:21:43
Buenas,
Estoy metiendo una base de datos a un combobox, según lo seleccionado en ese combobox, otro combobox se rellena. El problema es que la base de datos está en access y son campos, cada campo tiene el nombre de cada opción del primer combobox y así se completa el 2 combobox, pero como no tienen el mismo número de regristros, cuando por ejemplo selecciono la 2 opción del primer combobox, en el segundo combobox al final de las opciones hay valores en blanco. Mi intención es eliminar esas opciones en blanco.
Por ejemplo
Imagino que se podrá poner un If que diga : Si valor de combobox es " " o "NULL" quítalo. O con un bucle que compare todos los registros con el " " y que si coincide se pueda eliminar.
La intención es que en el primer combobox (Combobox2) estén las capitales de provincia y en el segundo (Combobox 3) los municipios.
La conexiónse realiza a la base de datos Access y luego enlazo directamente con un BindingSource y con un TableAdapter.
Private Sub ComboBox2_TextChanged(sender As Object, e As EventArgs) Handles ComboBox2.TextChanged
If ComboBox2.Text = "Albacete" Then
ComboBox3.DataSource = MunicipiosBindingSource
ComboBox3.DisplayMember = "Albacete"
If ComboBox2.Text = "Almería" Then
ComboBox3.DataSource = MunicipiosBindingSource
ComboBox3.DisplayMember = "Almería"
......
End Sub
Así con todos.
El problema es que como por ejemplo Albacete tiene 90 municipios y Almería tiene 100 (por ejemplo) el desplegable del combobox de municipios (Combobox 3) me muestra para Albacete 90 municipios y 10 huecos.
Hay municipios donde aparecen 50 en blanco..
Otra opción que he realizado es poner en vez de los municipios en campos, en tablas de una misma base de datos y realizar un bindingSource a cada tabla y así no hay huecos pero en principio me ralentiza el programa.
Lo he realizado al contrario, es decir poniendo cada provincia como nombre de tabla y en el primer campo pongo todos sus municipios, así tengo unas 50 tablas (1 por provincia) pero así no tengo el problema de los huecos vacíos.... El problema de hacerlo así es que cuando inicio el programa, está como 15 segundos invisible (imagino que cargando todas las tablas y conexiones) Tengo unas 50 bindingSource con sus respectivos TableAdapter.
El codigo es prácticamente igual. Pero al hacer la referencia, el bindingSource es diferente para cada 1.
Estoy abierto a nuevas formas de hacerlo con tal de que sea mas fluido.
Utilizo Visual Basic 2015
Muchas Gracias!
Saludos.
Estoy metiendo una base de datos a un combobox, según lo seleccionado en ese combobox, otro combobox se rellena. El problema es que la base de datos está en access y son campos, cada campo tiene el nombre de cada opción del primer combobox y así se completa el 2 combobox, pero como no tienen el mismo número de regristros, cuando por ejemplo selecciono la 2 opción del primer combobox, en el segundo combobox al final de las opciones hay valores en blanco. Mi intención es eliminar esas opciones en blanco.
Por ejemplo
1
2
3
4
Campo 1 Campo 2
3 2
2 1
1 " "
La intención es que en el primer combobox (Combobox2) estén las capitales de provincia y en el segundo (Combobox 3) los municipios.
La conexiónse realiza a la base de datos Access y luego enlazo directamente con un BindingSource y con un TableAdapter.
Private Sub ComboBox2_TextChanged(sender As Object, e As EventArgs) Handles ComboBox2.TextChanged
If ComboBox2.Text = "Albacete" Then
ComboBox3.DataSource = MunicipiosBindingSource
ComboBox3.DisplayMember = "Albacete"
If ComboBox2.Text = "Almería" Then
ComboBox3.DataSource = MunicipiosBindingSource
ComboBox3.DisplayMember = "Almería"
......
End Sub
Así con todos.
El problema es que como por ejemplo Albacete tiene 90 municipios y Almería tiene 100 (por ejemplo) el desplegable del combobox de municipios (Combobox 3) me muestra para Albacete 90 municipios y 10 huecos.
Hay municipios donde aparecen 50 en blanco..
Otra opción que he realizado es poner en vez de los municipios en campos, en tablas de una misma base de datos y realizar un bindingSource a cada tabla y así no hay huecos pero en principio me ralentiza el programa.
Lo he realizado al contrario, es decir poniendo cada provincia como nombre de tabla y en el primer campo pongo todos sus municipios, así tengo unas 50 tablas (1 por provincia) pero así no tengo el problema de los huecos vacíos.... El problema de hacerlo así es que cuando inicio el programa, está como 15 segundos invisible (imagino que cargando todas las tablas y conexiones) Tengo unas 50 bindingSource con sus respectivos TableAdapter.
El codigo es prácticamente igual. Pero al hacer la referencia, el bindingSource es diferente para cada 1.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Public Class Datos
Private Sub Municipios_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.ÁlavaTableAdapter.Fill(Me.Municipios_acabadosDataSet2.Tabla1)
Me.AlbaceteTableAdapter.Fill(Me.Municipios_acabadosDataSet2.Tabla1)
Private Sub ComboBox2_TextChanged(sender As Object, e As EventArgs) Handles ComboBox2.TextChanged
If ComboBox2.Text = "Albacete" Then
ComboBox3.DataSource = BindingSource
ComboBox3.DisplayMember = "Campo1"
End If
If ComboBox2.Text = "Alicante" Then
ComboBox3.DataSource = BindingSource1
ComboBox3.DisplayMember = "Campo1"
End If
End Sub
Estoy abierto a nuevas formas de hacerlo con tal de que sea mas fluido.
Utilizo Visual Basic 2015
Muchas Gracias!
Saludos.
Valora esta pregunta


0