none
Función con ComboBox RRS feed

  • 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!


    sábado, 28 de julio de 2018 0:25

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

    sábado, 28 de julio de 2018 1:34
  • 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? 

    lunes, 30 de julio de 2018 11:56
  • 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
    lunes, 30 de julio de 2018 14:03
  • Te entiendo pero necesito mostrarlo cuando se carga el formulario.
    lunes, 30 de julio de 2018 17:29
  • 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...
    lunes, 30 de julio de 2018 18:04