Principales respuestas
error converting data type varchar to int

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 Functiondonde estaría el error?
Respuestas
-
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.- Propuesto como respuesta Miguel Torres C miércoles, 3 de agosto de 2016 15:55
- Marcado como respuesta José De AlvaModerator miércoles, 3 de agosto de 2016 17:43
-
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.- Propuesto como respuesta Miguel Torres C miércoles, 3 de agosto de 2016 15:55
- Marcado como respuesta José De AlvaModerator miércoles, 3 de agosto de 2016 17:43
Todas las respuestas
-
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.- Propuesto como respuesta Miguel Torres C miércoles, 3 de agosto de 2016 15:55
- Marcado como respuesta José De AlvaModerator miércoles, 3 de agosto de 2016 17:43
-
-
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.- Propuesto como respuesta Miguel Torres C miércoles, 3 de agosto de 2016 15:55
- Marcado como respuesta José De AlvaModerator miércoles, 3 de agosto de 2016 17:43
-