none
¿Combobox, Valuemember & displaymember failed to conversion to int?

    Pregunta

  • Hola gente, 
    Tengo un combobox (cmbLugar) que es llenado de una tabla llamada "T_PROVINCIA" la cual solo tiene 2 atributos, que son "COD_LUGAR" y "PROVINCIA" 
    El primer atributo "COD_LUGAR" es un número y a la misma vez pk, el segundo es "PROVINCIA" y es el nombre del lugar ejemplo
    COD_LUGAR: 1; PROVINCIA: SAN JOSE
    La idea es mostrar los nombres de los lugares en el combobox (cmb_Lugar) y que se agreguen en la otra tabla llamada "T_PARTE" el "COD_LUGAR" (COD_LUGAR es fk en T_PARTE)
    para eso utilicé el siguiente codigo

    Public Sub llenarCombo()
    Dim dt As New DataTable()
    Dim da As New SqlDataAdapter()
    Try
    conn.Open()
    da = New SqlDataAdapter("Select COD_LUGAR, PROVINCIA from T_PROVINCIA", conn)
    da.Fill(dt)
    cmbLugar.DisplayMember = "PROVINCIA"
    cmbLugar.ValueMember = "COD_LUGAR"
    cmbLugar.DataSource = dt

    Catch ex As Exception
    MessageBox.Show(ex.Message)
    End Try
    conn.Close()

    End Sub

    Me da un error que dice: conversion failed when converting the nvarchar values 'SAN JOSE' to data type int

    Sé que el error es porque el atributo COD_LUGAR es int pero no se como arreglarlo

    Espero me puedan ayudar, muchas gracias

    miércoles, 19 de diciembre de 2012 19:24

Todas las respuestas

  • de casualidad tienes definido el evento SelectedIndexChanged del combo ?

    si tienes ese evento cambialo por el SelectionChangeCommited

    Sé que el error es porque el atributo COD_LUGAR es int pero no se como arreglarlo

    en que linea es que falla ?

    o sea estas usando el SelectedValue para tomar el valor que conviertes a int para trabjarlo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 19 de diciembre de 2012 20:41
  • No tengo definido ninguno de esos eventos de hecho ni siquiera se de ellos (soy novato en esto) el programa me falla porque al momento de agregar esta tomando el atributo 'provincia' en vez del atributo 'cod_lugar'  y como el atributo 'provincia' es un string me da el error ya que el atributo 'cod_lugar' es un int, no se si tengo que modificar algo en la linea de agregar la cual es la siguiente

     Dim comando As New SqlCommand("Insert into T_PARTE(NUM_LIC,NUM_PLACA,CODIGO,FECHA,CODIGO_PARTE,COD_LUGAR,NUM_EMPLEADO) values (@numl,@pla,@cod,@fec,@codp,@codl,@nume)", conn)

    comando.Parameters.AddWithValue("codl", cmbLugar.Text)

    comando.ExecuteNonQuery()
    conn.Close()

    Espero me entiendas disculpa si no me explico bien es que soy nuevo en este tipo de programación dirigida a objetos u.u



    • Editado Dna360 viernes, 21 de diciembre de 2012 13:56
    viernes, 21 de diciembre de 2012 13:55
  • Ya lo resolví!!! 

    lo que hice fue lo siguiente
    a la función llenar le agregue el .selectedvalue y al botón le agregar le cambie el .text por .selecetedvalue abajo esta el código

    Public Sub llenarCombo()
            Dim dt As New DataTable()
            Dim da As New SqlDataAdapter()


            Try
                conn.Open()
                da = New SqlDataAdapter("Select COD_LUGAR, PROVINCIA from T_PROVINCIA", conn)
                da.Fill(dt)

                cmbLugar.DisplayMember = "PROVINCIA"
                cmbLugar.ValueMember = "COD_LUGAR"
          cmbLugar.SelectedValue = "COD_LUGAR"
                cmbLugar.DataSource = dt

            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
            conn.Close()

        End Sub

    Botón agregar

     Dim comando As New SqlCommand("Insert into T_PARTE(NUM_LIC,NUM_PLACA,CODIGO,FECHA,CODIGO_PARTE,COD_LUGAR,NUM_EMPLEADO) values (@numl,@pla,@cod,@fec,@codp,@codl,@nume)", conn)

    comando.Parameters.AddWithValue("codl", cmbLugar.SelectedValue)

    comando.ExecuteNonQuery()
    conn.Close()




    Espero esto les sirva a los demás tanto como a mi 

                 
    • Editado Dna360 viernes, 21 de diciembre de 2012 14:33
    viernes, 21 de diciembre de 2012 14:32