Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Visual Basic clásico (http://www.forosdelweb.com/f69/)
-   -   Redondeos en SQL Server (http://www.forosdelweb.com/f69/redondeos-sql-server-491783/)

Expinete 22/05/2007 02:09

Redondeos en SQL Server
 
Hola a todos. Tengo un problema desde hace mucho tiempo que no lo he podido solucionar.
En una Tabla de SQL Server tengo un campo "Importe" Tipo float.
En un formulario de Visual Basic tengo un cuadro de texto con el valor 74,99

Al asignarle el valor al campo de la base de datos pongo lo siguiente:
rs.fields("Importe")=round(cdbl(txtimporte.text),2 )
También he probado a hacer lo siguiente:
Dim Importe as double
Importe=round(txtimporte.text),2)
rs.fields("Importe")=importe

Si miro el valor de rs.fields("Importe") lo tiene correcto: 74,99 pero sin embargo miro en la base de datos y ha grabado 74,989999999999995.

Esto me da muchos problemas a la hora de sumar la columna de Importe.

Agradecería alguna ayuda.

Sir Matrix 22/05/2007 07:36

Re: Redondeos en SQL Server
 
Hola.
Prueba cambiar el tipo de datos del sql server de Float a Decimal, con la cantidad de decimales que necesites

campoDecimal (9,3) -- con 3 decimales por ejemplo

saludos

Expinete 22/05/2007 08:13

Re: Redondeos en SQL Server
 
Gracias pero no puedo hacer eso porque tengo en la base de datos muchas tablas que tienen campos float y tendría que modificar tabla por tabla en todos los usuarios y luego actualizar un montón de informes de crystal report.

TheMaster000 22/05/2007 13:25

Re: Redondeos en SQL Server
 
hola trata de mirar el tipo de datos que utilizaste cuando creaste la tabla depronto es que no tuviste en cuenta cuando cifras significativas hibas a tener en cuenta con el tipo de dato float.:arriba:

Expinete 23/05/2007 04:26

Re: Redondeos en SQL Server
 
Cuando creo un campo Float SQL me pone por defecto 53 en precisión y no lo puedo cambiar


La zona horaria es GMT -6. Ahora son las 18:41.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.