![]() |
Caso Anómalo Hola a todos. Tenemos un problemón que no tiene ni pies ni cabeza. Llevamos muchos años programando y en uno de nuestros programas hechos en Visual Basic tenemos un problema excepcionalmente curioso. Resulta que cuando buscamos en una tabla un valor concreto NO SE ENCUENTRA. Imaginaos la tabla: [operaciones] Con los campos: [Id] - Autonumérico [importe] - Doble Pues cuando buscamos cualquier importe usando la consulta: SELECT id FROM operaciones WHERE importe = 7.5 se encuentran los registros sin problemas. ¡¡¡¡¡¡¡¡¡¡¡¡¡ EXCEPTO para el número 7.56 !!!!!!!!!!!!!!! Si buscamos cualquier otro número funciona, pero no con ese. ¿Se le ocurre algo a alguien? Muchas gracias a todos. |
Re: Caso Anómalo Hola, yo veo que está bien que la consulta no devuelva nada, el valor es 7.56, no 7.5. Tal vez si le agregas un round puedes manejar lo de los decimales. Saludos pd: creo que no existe el tipo "double" en sql server |
Re: Caso Anómalo Bueno en realidad la función Round sólo funciona para el caso de nuestra base de datos en SQL, y tampoco resulta. Ni con un Round aparece. En Access 97 no se puede usar esa función, se usa a partir de 2000. Lo del tipo Doble hacía referencia a ACCESS, que lo tenemos de tipo Numérico - Doble. En SQL lo tenemos como Float. Ya sabemos que el problema está en las bases de datos más antiguas. En SQL Server 2005 y en ACCESS 2000 si se puede, pero si probáis a crearos una tabla en Access 97 (tan sencilla como la que os dije antes) y le añadís un registro con el valor de importe 7.56, no la encontraréis con las sentencias SQL. Lo mismo pasa con versiones antiguas de SQLServer, que lo hemos probado (incluso con el Round). Es extremadamente raro pues números como 8.56, 7,55 ó 7.58 se encuentran sin el mayor problema usando la cadena que os comenté antes. Gracias. |
Re: Caso Anómalo Cita:
Como bien dices, si el resgitro tuviera 7.56 y lo buscas con 7.5 es normal que no aparezca. Pero no es el caso. Buscamos lo que tenemos y no aparece si es ese puñetero número. Es una locura. |
Re: Caso Anómalo Hola, que raro lo de las versiones antiguas. En mssql podría solucionarse cambiando el tipo de datos de float a un decimal o numeric que acepte los decimales que necesites. El tipo folat no es muy preciso: "float y real: Tipos de datos numéricos y aproximados que se utilizan con datos numéricos de punto flotante. Los datos de punto flotante son aproximados; no todos los valores del intervalo del tipo de datos se pueden representar con precisión." En access 97 ni idea, sòlo podrías probar consultando por algo como SELECT id FROM operaciones WHERE importe > 7.55 and importe <7.57 y ver si así te trae los datos, alomejor el valor en realidad no es de 7.56 sino algo como 7.56000000000000000001 :P saludoss |
Re: Caso Anómalo Cita:
Cita:
|
Re: Caso Anómalo select convert(real, 7.56) Verás que equivale a 7.5599999 Prueba con Money o Numeric como te sugieren. |
| La zona horaria es GMT -6. Ahora son las 06:41. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.