Usuario
Función con ComboBox

Pregunta
-
Hola, tengo una función que se encarga de buscar valores para asignar a los ComboBox la cual ejecuto en el load de un form.
Public Function CargarLocalidad(CBLocalidad As ComboBox, CbProv As ComboBox) Dim Cn As New SqlConnection(strCadenaConexion) Dim Da As New SqlDataAdapter Dim Cmd As New SqlCommand Cmd.CommandType = CommandType.Text Cmd.CommandText = "SELECT PkLocalidad, Localidad.Nombre, PkProvincia, Provincia.Nombre FROM Localidad inner join Provincia on localidad.FkProvincia = Provincia.PkProvincia WHERE PkLocalidad = " & CBLocalidad.ValueMember & "" Cmd.Connection = Cn Cn.Open() Dim reader As SqlDataReader = Cmd.ExecuteReader() If reader.HasRows Then reader.Read() CBLocalidad.DisplayMember = Convert.ToString(reader(1)) CbProv.ValueMember = Convert.ToInt32(reader(2)) CbProv.DisplayMember = Convert.ToString(reader(3)) End If Return CBLocalidad End Function
El problema que tengo es que muestra ningún valor a los combobox. Los valores llegan correctamente a través del read.
Como podría hacer para que me muestre los valores que le asigno?
Espero me pueda ayudar, saludos!
- Editado Federico32113 sábado, 28 de julio de 2018 0:35
Todas las respuestas
-
Hola Federico32113,
¿Porqué tu función retorna un ComboBox?
El problema básicamente se puede dar porque se está utilizando incorrectamente el método Read() de la clase 'SqlDataReader', el cual tendría que estar en un While para leer fila por fila, algo como :
'Si hay filas If reader.HasRows Then 'Mientras haya registro a leer While reader.Read() 'Realizamos alguna tarea por cada fila leída End While End If
Sin embargo, no encuentro el sentido de tu función ya que no es necesario utilizar el SqlDataReader y no veo en ningún lugar en donde asignes la data resultante a la propiedad DataSource de tu ComboBox.
¿Quieres cargar los datos a CBProv dependiendo del elemento seleccionado en el ComboBox CPLocalidad?
Saludos.
JC NaupaCrispín
Lima - Perú
La magia no existe, la programación SI -
El valor que obtendría de la consulta SQL es un único registro siempre.
La propiedad "ValueMember" de CBLocalidad tiene asignado un numero, lo que quiero realizar es que en el "load" mediante ese numero busque el nombre de la localidad, la clave de la provincia a la cual pertenece y el nombre de la provincia mediante la consulta y asignar los valores al combobox.
Que me recomiendas que retorne desde la función?
-
Amigo federico yo me rompi la cabeza una vez tratando de hacer lo mismo que tu en el evento load y una persona me recomendo que utilizar el evento click del combobox, pruebalo y veras
- Propuesto como respuesta Efrain Diaz lunes, 30 de julio de 2018 18:01
- Votado como útil Efrain Diaz lunes, 30 de julio de 2018 18:02
-
-
amigo Federico recuerda que los combobox son controles cerrados que se activan con el evento click ya sea tu poniendo los datos manuales o que vengan de una base de datos, te lo digo por que ya yo pase por la experiencia y mis dolores de cabeza terminaron cuando lo hize con el evento click, pero te deseo mucho exito y que todo te salga como quieres...