none
Error al llenar ComboBox

    Pregunta

  • Hola a todos, tengo que llenar un combobox con sql pero me sale el siguiente error: El valor de tipo boolean no se puede convertir en DataView.

    conectar() sql = "select * from contrato" da = New SqlClient.SqlDataAdapter(sql, coneccion) Dim dt As New DataTable da.Fill(dt) Dim bind1 As New DataView

    'ESTA LINEA MARCA EL ERROR bind1 = dt.DefaultView.Sort = ("NUMERO_DE_CONTRATO")

    bind1.RowFilter = "USUARIO_ADMISTRADOR=@usuario" Dim comando As New SqlClient.SqlCommand(sql, coneccion) combocontra.DataSource = bind1 combocontra.DisplayMember = ("NUMERO_DE_CONTRATO") combocontra.ValueMember = ("NUMERO_DE_CONTRATO") combocontra.Text = "" comando.Parameters.AddWithValue("@usuario", LoginForm1.UsernameTextBox.Text) coneccion.Close()

    La linea en la que sale el error la he comentado.

    Espero su ayuda.

    Saludos!,

    miércoles, 9 de noviembre de 2016 15:55

Respuestas

  • Hola Ziany,

    El error se produce porque a la variable bind1 que es de tipo DataView le estás asignándo (mediante el =) el resultado de la comparación del Sort con ese valor (le asignas un igual entre ambos, dónde se leería : Si dt...Sort = "Numero...." retorna True, caso contrario False), lo correcto sería ordenar la data y luego asignarla. Algo como :

    dt.DefaultView.Sort = "NUMERO_DE_CONTRATO"
    Dim bind1 As DataView = dt.DefaultView


    Porque no haces la consulta directamente con el filtro ? Puedes usar el ORDER BY para ordernar el resultado según el campo.

    Public Sub cargarCombo()
        Try
            Using con As New SqlConnection("MiCadenaConexion")
                Dim sql = "select NUMERO_DE_CONTRATO from contrato where " &
                "USUARIO_ADMISTRADOR = @usuario Order By NUMERO_DE_CONTRATO ASC"
    
                Dim da As New SqlDataAdapter(sql, con)
                da.SelectCommand.Parameters.AddWithValue("@usuario", LoginForm1.UsernameTextBox.Text)
    
                Dim dt As New DataTable
                da.Fill(dt)
    
                combocontra.DataSource = dt
                combocontra.DisplayMember = "NUMERO_DE_CONTRATO"
                combocontra.ValueMember = "NUMERO_DE_CONTRATO"
    
            End Using
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Ziany miércoles, 9 de noviembre de 2016 17:22
    miércoles, 9 de noviembre de 2016 17:09

Todas las respuestas

  • Hola Ziany,

    El error se produce porque a la variable bind1 que es de tipo DataView le estás asignándo (mediante el =) el resultado de la comparación del Sort con ese valor (le asignas un igual entre ambos, dónde se leería : Si dt...Sort = "Numero...." retorna True, caso contrario False), lo correcto sería ordenar la data y luego asignarla. Algo como :

    dt.DefaultView.Sort = "NUMERO_DE_CONTRATO"
    Dim bind1 As DataView = dt.DefaultView


    Porque no haces la consulta directamente con el filtro ? Puedes usar el ORDER BY para ordernar el resultado según el campo.

    Public Sub cargarCombo()
        Try
            Using con As New SqlConnection("MiCadenaConexion")
                Dim sql = "select NUMERO_DE_CONTRATO from contrato where " &
                "USUARIO_ADMISTRADOR = @usuario Order By NUMERO_DE_CONTRATO ASC"
    
                Dim da As New SqlDataAdapter(sql, con)
                da.SelectCommand.Parameters.AddWithValue("@usuario", LoginForm1.UsernameTextBox.Text)
    
                Dim dt As New DataTable
                da.Fill(dt)
    
                combocontra.DataSource = dt
                combocontra.DisplayMember = "NUMERO_DE_CONTRATO"
                combocontra.ValueMember = "NUMERO_DE_CONTRATO"
    
            End Using
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Ziany miércoles, 9 de noviembre de 2016 17:22
    miércoles, 9 de noviembre de 2016 17:09
  • Sos un genio, de verdad te lo agradezco mucho, ha servido de maravilla.

    Muchas gracias!

    miércoles, 9 de noviembre de 2016 17:22