none
error converting data type varchar to float en vb.net RRS feed

  • Pregunta

  • Qu es este error,como lo puedo solucionar.

    Agradeceria mucho la ayuda, ya que he intentado arreglarlo y no puedo,ya no se que hacer.

    Unos datos en la Bd son float y otras varchar,pero en la aplicacion me da ese error lo QUE NO SE ES COMO MANEJAR ESE ERROR


    Danny H.B.

    • Cambiado Enrique M. Montejo jueves, 25 de febrero de 2016 12:28 Pregunta relacionada con el acceso a datos.
    jueves, 11 de julio de 2013 21:30

Todas las respuestas

  • Tengo un problema con una aplicacion que lo que hace es consultar a una base de datos, tengo este error:

    {"Error converting data type varchar to float."}

    Tengo el codigo para que llene un listview,pero un campo en la BD es float,a lo que entiendo el llenado que estoy haciendo es para varchar, como hago para que me convierta a varchar o me acepte el float

    Gracias por la ayuda 


    Danny H.B.

    jueves, 11 de julio de 2013 15:35
  • conviertela desde la consulta, puedes usar cast o convert, o si no, en la aplicación, al final de la asignación usa la propiedad tostring (campoBd.tostring)

    SAludos

    jueves, 11 de julio de 2013 15:39
  • Error converting data type varchar to float

    pero el problema se presenta cuando cargas el listview o cuando quieres grabarlo?

    estas usnado parametros en las queries que defines ? como es el codigo que te esta fallando

    claramente es un problema de conversion

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 11 de julio de 2013 15:42
  • el problema es cuando busco y quiero llenar el listview con los datos resultantes de la busqueda

    Tengo esto:

    Friend Sub LlenarDS(ByRef DS As DataSet, ByVal SQL As String)

            Dim Adaptador As New OleDb.OleDbDataAdapter(SQL, DB)
            Adaptador.Fill(DS)

        End Sub

    y la consulta sql dentro del form es:

    If cedula <> "" Then
                SQL = "SELECT CAMPO1,CAMPO2,CAMPO3,CAMPO4,CAMPO5 FROM NOMBREBD where CAMPO3 = '" & txtCedula.Text & "'"
            Else
            End If
            If nombre <> "" Then
    
                SQL = "SELECT CAMPO1,CAMPO2,CAMPO3,CAMPO4,CAMPO5 FROM NOMBREBD where  CAMPO4 like '%" & txtNombre.Text & "%'"
            End If
    
            LlenarDS(DS, SQL)
    
            ListViewMuestraBusqueda.Items.Clear()
    
            For Each Fila As DataRow In DS.Tables(0).Rows
                Lista = New ListViewItem
                Lista.Text = Fila.Item(0).ToString
                Lista.SubItems.Add(Fila.Item(1).ToString)
                Lista.SubItems.Add(Fila.Item(2).ToString)
                Lista.SubItems.Add(Fila.Item(3).ToString)
                Lista.SubItems.Add(Fila.Item(4).ToString)
    
                ListViewMuestraBusqueda.Items.Add(Lista)
            Next

    eL PROBLEMA LO TENGO CON EL CAMPO3,que en la BD es FLOAT,bueno eso creo que es el error,ahi esta la parte principal del codigo que hace practicamento todo


    Danny H.B.

    jueves, 11 de julio de 2013 16:03
  • ya intente dentro de la sentencia SQl hacer la conversion asi Campo.ToString()


    SQL = "SELECT CAMPO1,CAMPO2,CAMPO3.ToString(),CAMPO4,CAMPO5 FROM NOMBREBD where CAMPO3 = '" & txtCedula.Text & "'"

    No se en que estare fallando


    Danny H.B.

    jueves, 11 de julio de 2013 16:05
  • el campo.tostring va en la aplicación, no en la consulta, en la consulta puedes usar es el cast o el convert

    SELECT CAMPO1,CAMPO2,convert(VARCHAR (50),CAMPO3),CAMPO4,CAMPO5 FROM NOMBREBD where CAMPO3 = '" & txtCedula.Text & "'"

    jueves, 11 de julio de 2013 16:08
  • esa consulta la estoy haciendo dentro de la aplicacion,pero necesito que se mantenga como float, sera eso posible?

    Danny H.B.

    jueves, 11 de julio de 2013 16:33
  • si, es posible...con tu cadena original como estaba asignala así

    Lista.SubItems.Add(Fila.Item(3))

    o con este otro a ver cual de los dos te funciona

    Lista.SubItems.Add(Cstr(Fila.Item(3)))
    jueves, 11 de julio de 2013 16:42
  • no funciona

    Danny H.B.

    jueves, 11 de julio de 2013 21:11
  • Seguramente estás tratando de asignar un campo tipo varchar a una variable tipo numérica. Si pudieras colocar el extracto del código te lo podría revisar.

    Saludos

    jueves, 11 de julio de 2013 21:50
  • Option Explicit On
    
    Imports System.Data
    Imports System.Data.OleDb
    Imports System.Data.SqlClient
    
    Public Class Form1
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            ConectarDB()
    
            LlenarDatos()
    
            Limpiar()
    
        End Sub
    
        Private Sub LlenarDatos(Optional ByVal cedula As String = "", Optional ByVal nombre As String = "")
    
            Dim SQL As String
            Dim DS As New DataSet
            Dim Lista As ListViewItem
    
            If cedula <> "" Then
                SQL = "SELECT TEL,TIPO,CEDULA,NOMBRE,DIREC FROM BAICE where CEDULA = '" & txtCedula.Text & "'"
            Else
            End If
            If nombre <> "" Then
    
                SQL = "SELECT TEL,TIPO,CEDULA,NOMBRE,DIREC FROM BAICE where NOMBRE like '%" & txtNombre.Text & "%'"
            End If
    
            LlenarDS(DS, SQL)
    
            ListViewMuestraBusqueda.Items.Clear()
    
            For Each Fila As DataRow In DS.Tables(0).Rows
                Lista = New ListViewItem
                Lista.Text = Fila.Item(0).ToString
                Lista.SubItems.Add(Fila.Item(1).ToString)
                Lista.SubItems.Add(Fila.Item(2).ToString)
                Lista.SubItems.Add(Fila.Item(3).ToString)
                Lista.SubItems.Add(Fila.Item(4).ToString)
    
                ListViewMuestraBusqueda.Items.Add(Lista)
            Next
    
        End Sub
    
        Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscar.Click
    
            LlenarDatos(txtCedula.Text, txtNombre.Text)
    
        End Sub
    
        Private Sub btnOtraBusqueda_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOtraBusqueda.Click
    
            Limpiar()
    
        End Sub
    
        Private Sub Limpiar()
    
            txtCedula.Text = ""
            txtNombre.Text = ""
            ListViewMuestraBusqueda.Clear()
    
        End Sub
    
    End Class

    modulo para conectar la BD

    Option Explicit On
    
    Imports System.Data
    Imports System.Data.OleDb
    Imports System.Data.SqlClient
    
    Module Module1
    
        Dim DB As New OleDb.OleDbConnection
    
        Friend Sub ConectarDB()
    
            DB.ConnectionString = "Provider=SQLOLEDB;Data Source=unnombre;Integrated Security=SSPI;Initial Catalog=nombreBD"
            
        End Sub
    
        Friend Sub DesconectarDB()
    
            DB.Close()
    
        End Sub
    
        Friend Sub EjecutaSQL(ByVal SQL As String)
    
            Dim Comando As New OleDb.OleDbCommand(SQL, DB)
            Comando.ExecuteNonQuery()
    
        End Sub
    
        Friend Sub LlenarDT(ByRef DT As DataTable, ByVal SQL As String)
    
            Dim Adaptador As New OleDb.OleDbDataAdapter(SQL, DB)
            Adaptador.Fill(DT)
    
        End Sub
    
        Friend Sub LlenarDS(ByRef DS As DataSet, ByVal SQL As String)
    
            Dim Adaptador As New OleDb.OleDbDataAdapter(SQL, DB)
            Adaptador.Fill(DS)
    
        End Sub
    
    End Module

    datos de la BD:

    Tel float

    tipo nvarchar(1)

    cedula float

    nombre nvarchar(30)

    direc nvarchar(120)

    Ocupo hacer la busQUEDA pero me da un error


    Danny H.B.

    jueves, 11 de julio de 2013 22:05
  • porque el campo cedula lo tienes en float y no en varchar ? y si quieres que siempre sea numerico

    desde tu aplicacion utiliza el componente NumericUpDown ?

    viernes, 12 de julio de 2013 0:23
  • Lo tengo en float porque asi me dieron la BD y asi me lo piden. Ocupo que siempre sea float en la BD,pero que cuando se ejecuta la aplicacion sea varchar para la busqueda y despues vuelva a ser float

    Danny H.B.

    viernes, 12 de julio de 2013 2:39