¿Combobox, Valuemember & displaymember failed to conversion to int?
-
miércoles, 19 de diciembre de 2012 19:24
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 arreglarloEspero me puedan ayudar, muchas gracias
Todas las respuestas
-
miércoles, 19 de diciembre de 2012 20:41Moderador
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 -
viernes, 21 de diciembre de 2012 13:55
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 14:32
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

