Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Error Numero:8115 Arithmetic overflow error converting numeric to data type numeric

Estas en el tema de Error Numero:8115 Arithmetic overflow error converting numeric to data type numeric en el foro de SQL Server en Foros del Web. Hola buen dia a todos... Primero que nada me presento soy victor y me encuentro desarrollando una aplicaion en VB, el problema que tengo es ...
  #1 (permalink)  
Antiguo 17/09/2008, 13:22
 
Fecha de Ingreso: septiembre-2008
Mensajes: 11
Antigüedad: 15 años, 7 meses
Puntos: 0
Error Numero:8115 Arithmetic overflow error converting numeric to data type numeric

Hola buen dia a todos...
Primero que nada me presento soy victor y me encuentro desarrollando una aplicaion en VB, el problema que tengo es que cuando realizo un update me manda el mensaje de error Error Numero:8115 [Microsoft][ODBC Sql Server Driver][Sql server]Arithmetic overflow error converting numeric to data type numeric, les describo lo que hace mi aplicacion en general:
primero lleno un grid con registros de la base de datos, despues en el grid manejo checkboxs y dependiendo el que este seleccionado hago un update por cada fila, el problema es que solo me permite actualizar la primera fila y ya despues manda el error de Desbordamiento.
He buscado informacion en varios foros y he deducido que no es problema del Visual basic si no de sql.
Espero puedan ayudarme donde puedo buscar informacion sobre como resolver esos errores
Saludoss
  #2 (permalink)  
Antiguo 17/09/2008, 13:36
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Respuesta: Error Numero:8115 Arithmetic overflow error converting numeric to data typ

Cita:
Iniciado por vicnux Ver Mensaje
Hola buen dia a todos...
Primero que nada me presento soy victor y me encuentro desarrollando una aplicaion en VB, el problema que tengo es que cuando realizo un update me manda el mensaje de error Error Numero:8115 [Microsoft][ODBC Sql Server Driver][Sql server]Arithmetic overflow error converting numeric to data type numeric, les describo lo que hace mi aplicacion en general:
primero lleno un grid con registros de la base de datos, despues en el grid manejo checkboxs y dependiendo el que este seleccionado hago un update por cada fila, el problema es que solo me permite actualizar la primera fila y ya despues manda el error de Desbordamiento.
He buscado informacion en varios foros y he deducido que no es problema del Visual basic si no de sql.
Espero puedan ayudarme donde puedo buscar informacion sobre como resolver esos errores
Saludoss
lo que pasa es que en la tabla el la declaración de un campo tiene un limite muy pequeño en precisión coloca le 18,0

nos vemos
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #3 (permalink)  
Antiguo 17/09/2008, 14:50
 
Fecha de Ingreso: septiembre-2008
Mensajes: 11
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Error Numero:8115 Arithmetic overflow error converting numeric to data typ

Hola GEOAVILA mira manejo demasiados campos en el update y actualizo de tipo char,datetime,int,float,varchar,tinyint y en algunos de ellos realizo conversiones (como por ejemplo hago una conversion de una fecha a horas y que al final la muestre en el grid como texto, el campo donde se guarda esta conversion es de tipo flotante y cuando aplico el update lo actualizo como flotante), asi como a las fechas tambien les doy formato que me recomiendas que transforme todos los campos de tipo int y float.


Asi esta mi update y a ver si no te revuelvo con tantos campos, los dos campos que estan marcados en negrita son los que mas conversiones sufren y estan como flotantes:

Update mar_ProgramaCarga set IDt = 0, IDContenedor = 'APHU4630030', FechaProgCarga =null,
TiempoRetaTrans = case when '17/09/2008 10:00 ' is null then 0 when isnull('17/09/2008 10:00 ','19000101') = '19000101' then 0 else convert(decimal(6,2),(datediff(mi, '17/09/2008 10:00 ',getdate())/60.00 )) - 2 end , Prioridad = 'NORMAL', STATUS = 'VA', FechaHEP =null, FechaHSPTO =null, DetenidoJaula =null, FechaHLLGAPatio = '17/09/2008 10:00', Pistas = 0, Custodia = 0, FechaHLLGACustodia =null, NAsignacion = 0, TipoViaje = 0, CartaPorte = '5787521', UnidadDespacho = 0, Placas = '', HorasAnticipar = 1, TiempoRetDesCliente = case when ' ' is null then 0 when isnull('17/09/2008 11:21 ','19000101') = '19000101' then 0 else isnull(' 1 ',0) - (convert(decimal(6,2),(datediff(mi, getdate(),'17/09/2008 11:21 ' )/60.00 ))) end , FechaHDesCliente = '17/09/2008 11:21', FechaHSPatio =null
WHere IDContenedor = 'APHU4630030'
  #4 (permalink)  
Antiguo 17/09/2008, 15:09
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Respuesta: Error Numero:8115 Arithmetic overflow error converting numeric to data typ

si pero el valor tiene que ser numérico y esos no se que tipo sean, podes colocar el script de creación de la tabla?

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #5 (permalink)  
Antiguo 17/09/2008, 15:35
 
Fecha de Ingreso: septiembre-2008
Mensajes: 11
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Error Numero:8115 Arithmetic overflow error converting numeric to data typ

OK. Aqui esta el Script:
CREATE TABLE mar_ProgramaCarga
(
IDProgCarga int identity(1,1) PRIMARY KEY ,
IDContenedor char(14) NOT NULL,
FechaProgCarga datetime NULL,
TiempoRetaTrans float NULL,
Prioridad varchar(25) NULL,
STATUS char(3) NULL,
NoSolicitud int NULL,
Naviera char(5) NULL,
Cliente char(25) NULL,
Remitente char(255) NULL,
Destinatario char(255) NULL,
TamanoCont smallint NULL,
TipoCont char(3) NULL,
Peso float NULL,
ProductoCarga varchar(25) NULL,
Sellos varchar(70) NULL,
Barco varchar (40) NULL,
BL int NULL,
FechaHMan datetime NULL,
CitaPuerto datetime NULL,
FechaHNotAAD datetime NULL,
UnidadRecogePuerto int NULL,
Placa varchar (10) NULL,
FechaHLLGAPatioReg datetime NULL,
FechaHEP datetime NULL,
FechaHSPTO datetime NULL,
DetenidoJaula datetime NULL,
FechaHLLGAPatio datetime NULL,
Pistas tinyint NULL,
Custodia tinyint NULL,
FechaHLLGACustodia datetime NULL,
NAsignacion int NULL,
TipoViaje tinyint NULL,
CartaPorte varchar(15) NULL,
UnidadDespacho int NULL,
Placas varchar(10) NULL,
Operador varchar(50) NULL,
Orig char(3) NULL,
Inter char(3) NULL,
Dest char(3) NULL,
FechaHSCarretera datetime NULL,
FechaHLLGPDestino datetime NULL,
HorasAnticipar float NULL,
TiempoRetDesCliente float NULL,
FechaHDesCliente datetime NULL,
FechaHSPatio datetime NULL,
FechaHLLGACliente datetime NULL,
FechaHSCliente datetime NULL,
FechaHLLGAPMarva datetime NULL,
PatioAlma varchar(30) NULL,
PagaManiobra char(25) NULL,
TarifaManiobra float NULL,
Ier varchar(25) NULL,
FechaHEFrontera datetime NULL,
Observacones varchar (255) NULL,
Instrucciones varchar (25) NULL,
ContactoMarva varchar (25) NULL,
ArchivoImporta varchar (30) Null,
ViajeCerrado tinyint NULL,
UltViaje tinyint NULL,
FechaAlta datetime NULL,
Usuario varchar (10) NULL,
Oficina char (3) NULL,
IDt tinyint NULL

)
y aki esta mi update completo:

Update mar_ProgramaCarga set IDt = 0, IDContenedor = 'APHU4630030', FechaProgCarga =null, TiempoRetaTrans = case when '17/09/2008 10:00 ' is null then 0 when isnull('17/09/2008 10:00 ','19000101') = '19000101' then 0 else convert(decimal(6,2),(datediff(mi, '17/09/2008 10:00 ',getdate())/60.00 )) - 2 end , Prioridad = 'NORMAL', STATUS = 'VA', NoSolicitud = 0, Naviera = 'APL', Cliente = 'APL', Remitente = 'APL', Destinatario = 'APL', TamanoCont = 40, TipoCont = '0', Peso = 4013, ProductoCarga = 'TENNIS', Sellos = '4542144', Barco = 'BUCANERO', BL = 2123449, FechaHMan = '28/02/2008 00:00', CitaPuerto =null, FechaHNotAAD = '28/02/2008 00:00', UnidadRecogePuerto = 438, Placa = 'TRL98570', FechaHLLGAPatioReg = '28/02/2008 00:00', FechaHEP =null, FechaHSPTO =null, DetenidoJaula =null, FechaHLLGAPatio = '17/09/2008 10:00', Pistas = 0, Custodia = 0, FechaHLLGACustodia =null, NAsignacion = 0, TipoViaje = 0, CartaPorte = '5787521', UnidadDespacho = 0, Placas = '', Operador = '', Orig = '', Inter = '', Dest= 'MEX', FechaHSCarretera =null, FechaHLLGPDestino = '16/09/2008 11:00', HorasAnticipar = 1, TiempoRetDesCliente = case when ' ' is null then 0 when isnull('17/09/2008 11:21 ','19000101') = '19000101' then 0 else isnull(' 1 ',0) - (convert(decimal(6,2),(datediff(mi, getdate(),'17/09/2008 11:21 ' )/60.00 ))) end , FechaHDesCliente = '17/09/2008 11:21', FechaHSPatio =null, FechaHLLGACliente =null, FechaHSCliente =null, FechaHLLGAPMarva =null, PatioAlma = '', PagaManiobra = 'NAVIERA', TarifaManiobra = 0, Ier = '544468', FechaHEFrontera =null, Observacones = '', Instrucciones = 'DIRECTO A DESCARGAR', ContactoMarva = '', ViajeCerrado = 0, UltViaje = 1, Usuario = '', Oficina = '' WHere IDContenedor = 'APHU4630030'




Este update lo aplico por cada una de las filas seleccionadas en el grid que tengo y como te mencionaba solo acepta un update y despues cuando aplica el segundo update de la fila siguiente manda el error de Desboradmineto
  #6 (permalink)  
Antiguo 17/09/2008, 16:25
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Respuesta: Error Numero:8115 Arithmetic overflow error converting numeric to data typ

para mí desde mi punto de vista updata en esta parte es así

TiempoRetaTrans = (case when '17/09/2008 10:00 ' is null then 0 else
(case when isnull('17/09/2008 10:00 ','19000101') = '19000101' then 0 else convert(decimal(6,2),(datediff(mi, '17/09/2008 10:00 ',getdate())/60.00 )) - 2 end) end)

valorCampo = (Case When UnValor= 1 then 0 else
(Case when OtroValor = 1 Then 1 else 3 end) end)

probá hacer los cambios en la consulta y me decis..

nos vemos.
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #7 (permalink)  
Antiguo 18/09/2008, 11:09
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Error Numero:8115 Arithmetic overflow error converting numeric to data typ

Un comentario, si me lo permiten, cuando usen campos, que sean del mismo tipo, es increible que esten utilizando INT en su tabla y FLOAT al momento de actualizar, eso genera un CONVERT automatico y por ende, se excluye el uso de INDICES.
  #8 (permalink)  
Antiguo 18/09/2008, 12:46
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Respuesta: Error Numero:8115 Arithmetic overflow error converting numeric to data typ

Cita:
Iniciado por iislas Ver Mensaje
Un comentario, si me lo permiten, cuando usen campos, que sean del mismo tipo, es increible que esten utilizando INT en su tabla y FLOAT al momento de actualizar, eso genera un CONVERT automatico y por ende, se excluye el uso de INDICES.
iislas creo que es al revés, se usa float en la tabla y enteros en el update, y si iislas tiene razón.

eso pasa por no revisar bien..

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #9 (permalink)  
Antiguo 20/12/2012, 15:18
 
Fecha de Ingreso: diciembre-2012
Mensajes: 1
Antigüedad: 11 años, 4 meses
Puntos: 0
Exclamación Respuesta: Error Numero:8115 Arithmetic overflow error converting numeric to data typ

ya lo solucione y es muy secillo.... si quiere un numeric(10,5) debe tener en cuenta que solo podra tener 5 enteros y 5 decimales . en cambio si quiere 10 enteros y 5 decimales debe crear un numeric(15,5) , si quiere 10 decimales debe crear un numeric(20,10) para mantener los 10 enteros. si no lo hace en intenta grabar en un numeric(10,5) un decimal con mas de 5 enteros , la va apercer el error en el update.
  #10 (permalink)  
Antiguo 20/12/2012, 15:26
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Error Numero:8115 Arithmetic overflow error converting numeric to data typ

4 años despues pero se llego a una solucion, felicidades :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 20/12/2012, 16:48
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Error Numero:8115 Arithmetic overflow error converting numeric to data typ

mas vale tarde, que nunca llegue, jajajaja
__________________
MCTS Isaias Islas
  #12 (permalink)  
Antiguo 20/12/2012, 17:18
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Error Numero:8115 Arithmetic overflow error converting numeric to data typ

y antes del fin del mundo :O eso es mejor jajajaja
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:53.