none
error converting data type varchar to int RRS feed

  • Pregunta

  • Tengo el siguiente codigo y me aparece este error:

    SQL Server:

    create proc insertar_DatosDelPredio 

     @CodigoPredio varchar(15),
     @ValorAvaluoActual money,
     @Vigencia  Date,
     @ClasificacionPredio int,
     @CodigoIGAC varchar(1),
     @DestinacionEconomica varchar(50),
     @CodigoT varchar(3),
     @Tarifa decimal(5,3),
     @Ubicacion Varchar (70),
     @NumeroPredio numeric (3,0),
     @MejoraPropiedad varchar(2),
     @NumPropietarios numeric(3,0),
     @TotalPropietarios numeric(3,0),
     @Apellidos varchar(50),
     @Nombres varchar(50),
     @TipoDocumento varchar(2),
     @NumeroDocumento numeric(10,0),
     @CodigoVB varchar(3),
     @VeredaBarrio varchar(20),
     @AreaHectareas numeric(10,0),
     @AreaMetros numeric(10,0),
     @AreaCostruida numeric(7,0)
     as
     insert into DatosDelPredio (CodigoPredio, ValorAvaluoActual, Vigencia, ClasificacionPredio, CodigoIGAC, DestinacionEconomica, 
     CodigoT, Tarifa, Ubicación, NumeroPredio, MejoraPropiedad, NumPropietario, TotalPropietarios, Apellidos, Nombres, 
     TipoDocumento, NumeroDocumento, CodigoVB, VeredaBarrio, AreaHectareas, AreaMetros2, AreaConstruida)
     values (@CodigoPredio, @ValorAvaluoActual, @Vigencia, @ClasificacionPredio, @CodigoIGAC, @DestinacionEconomica, 
     @CodigoT, @Tarifa, @Ubicacion, @NumeroPredio, @MejoraPropiedad, @NumPropietarios, @TotalPropietarios, 
     @Apellidos, @Nombres, @TipoDocumento, @NumeroDocumento, @CodigoVB, @VeredaBarrio, @AreaHectareas, @AreaMetros, @AreaCostruida)
     go

    --------------------------------------------------------------------------------------------------------------------------------

    Visual Studio:

    en una clase tengo:

    Public Class LDatosDelPredio
        Dim IdDatosPredio As Integer
        Dim ValorAvaluoActual As Integer
        Dim CodigoPredio As String
        Dim Vigencia As Date
        Dim ClasificacionPredio As String
        Dim CodigoIGAC As String
        Dim DestinacionEconomica As String
        Dim CodigoT As String
        Dim Tarifa As Double
        Dim Ubicacion As String
        Dim NumeroPredio As Integer
        Dim MejoraPropiedad As String
        Dim NumPropietario As Integer
        Dim TotalPropietarios As Integer
        Dim Apellidos As String
        Dim Nombres As String
        Dim TipoDocumento As String
        Dim NumeroDocumento As Integer
        Dim CodigoVB As String
        Dim VeredaBarrio As String
        Dim AreaHectareas As Integer
        Dim AreaMetros As Integer
        Dim AreaCostruida As Integer

        Public Property GIdDatosPredio
            Get
                Return IdDatosPredio
            End Get
            Set(value)
                IdDatosPredio = value
            End Set
        End Property

    (..)

    y los demás "Get Y Set" para todas las variables.

    Y otra clase donde hago lo siguiente:

    Public Function Insertar(ByVal dts As LDatosDelPredio) As Boolean
            Try
                Conectado()
                cmd = New SqlCommand("insertar_DatosDelPredio")
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Connection = cnn

                cmd.Parameters.AddWithValue("@CodigoPredio", dts.GCodigoPredio)
                cmd.Parameters.AddWithValue("@ValorAvaluoActual", dts.GValorAvaluoActual)
                cmd.Parameters.AddWithValue("@Vigencia", dts.GVigencia)
                cmd.Parameters.AddWithValue("@ClasificacionPredio", dts.GClasificacionPredio)
                cmd.Parameters.AddWithValue("@CodigoIGAC", dts.GCodigoIGAC)
                cmd.Parameters.AddWithValue("@DestinacionEconomica", dts.GDestinacionEconomica)
                cmd.Parameters.AddWithValue("@CodigoT", dts.GCodigoT)
                cmd.Parameters.AddWithValue("@Tarifa", dts.GTarifa)
                cmd.Parameters.AddWithValue("@Ubicacion", dts.GUbicacion)
                cmd.Parameters.AddWithValue("@NumeroPredio", dts.GNumeroPredio)
                cmd.Parameters.AddWithValue("@MejoraPropiedad", dts.GMejoraPropiedad)
                cmd.Parameters.AddWithValue("@NumPropietarios", dts.GNumPropietario)
                cmd.Parameters.AddWithValue("@TotalPropietarios", dts.GTotalPropietarios)
                cmd.Parameters.AddWithValue("@Apellidos", dts.GApellidos)
                cmd.Parameters.AddWithValue("@Nombres", dts.GNombres)
                cmd.Parameters.AddWithValue("@TipoDocumento", dts.GTipoDocumento)
                cmd.Parameters.AddWithValue("@NumeroDocumento", dts.GNumeroDocumento)
                cmd.Parameters.AddWithValue("@CodigoVB", dts.GCodigoVB)
                cmd.Parameters.AddWithValue("@VeredaBarrio", dts.GVeredaBarrio)
                cmd.Parameters.AddWithValue("@AreaHectareas", dts.GAreaHectareas)
                cmd.Parameters.AddWithValue("@AreaMetros", dts.GAreaMetros)
                cmd.Parameters.AddWithValue("@AreaCostruida", dts.GAreaCostruida)

                If cmd.ExecuteNonQuery Then
                    Return True
                Else
                    Return False
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
                Return False
            Finally
                Desconectado()

            End Try
        End Function

     

    donde estaría el error?

    miércoles, 3 de agosto de 2016 13:48

Respuestas

  • JorgeLeonardoDC,

    Debes de guardar correspondencia entre los tipos que defines en una tabla de base de datos y su representación como clase, fíjate en la columna [ClasificacionPredio] (entiendo que el tipo del parámetro es el mismo que el de la tabla) es de tipo entero mientras que la clase la defines de tipo string, de igual manera, la columna [ValorAvaluoActual] la defines de tipo money mientras en la clase es de tipo Integer, otras columnas como [NumeroDocumento] la defines de tipo numeric(e, p) mientras que en la clase es de tipo Integer.

    Revisa que los tipos que defines en cada columna de la tabla sean los mismos que defines en la clase y también en los parámetros  del procedimiento.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 3 de agosto de 2016 14:19
  • JorgeLeonardoDC,

    Es que no tiene sentido definir un tipo numeric(p, s) cuando la escala es cero (por ejemplo, numeric (3, 0)) porque no haces uso de la parte decimal, para eso has uso de un tipo Integer en la tabla de base de datos y también en la propiedad de la clase. Te recomiendo hagas las correcciones en la tabla, en caso mantengas el tipo numeric(p, s), por correspondencia utiliza un tipo decimal en la propiedad correspondiente de la clase. 

    Por otro lado, no olvides cambiar el tipo string a entero de la propiedad [ClasificacionPredio], fíjate que la columna es de tipo entero y la propiedad la defines de tipo string. Como recomendación adicional, vigila que los tipos numéricos reciban un valor consistente en los casos en que al usuario se le permite ingresar caracteres alfanuméricos.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 3 de agosto de 2016 15:47

Todas las respuestas

  • JorgeLeonardoDC,

    Debes de guardar correspondencia entre los tipos que defines en una tabla de base de datos y su representación como clase, fíjate en la columna [ClasificacionPredio] (entiendo que el tipo del parámetro es el mismo que el de la tabla) es de tipo entero mientras que la clase la defines de tipo string, de igual manera, la columna [ValorAvaluoActual] la defines de tipo money mientras en la clase es de tipo Integer, otras columnas como [NumeroDocumento] la defines de tipo numeric(e, p) mientras que en la clase es de tipo Integer.

    Revisa que los tipos que defines en cada columna de la tabla sean los mismos que defines en la clase y también en los parámetros  del procedimiento.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 3 de agosto de 2016 14:19
  • como podria establecerlos

    si en la tabla tengo una columna de tipo Numeric(e,p) cual debo usar en VS ?

    un decimal o  un Integer o..?

    miércoles, 3 de agosto de 2016 15:16
  • JorgeLeonardoDC,

    Es que no tiene sentido definir un tipo numeric(p, s) cuando la escala es cero (por ejemplo, numeric (3, 0)) porque no haces uso de la parte decimal, para eso has uso de un tipo Integer en la tabla de base de datos y también en la propiedad de la clase. Te recomiendo hagas las correcciones en la tabla, en caso mantengas el tipo numeric(p, s), por correspondencia utiliza un tipo decimal en la propiedad correspondiente de la clase. 

    Por otro lado, no olvides cambiar el tipo string a entero de la propiedad [ClasificacionPredio], fíjate que la columna es de tipo entero y la propiedad la defines de tipo string. Como recomendación adicional, vigila que los tipos numéricos reciban un valor consistente en los casos en que al usuario se le permite ingresar caracteres alfanuméricos.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 3 de agosto de 2016 15:47
  • Si, gracias 

    Ya resolvi el problema

    miércoles, 3 de agosto de 2016 22:31