No redondear suma

En un informe tengo varios campos numéricos que se suman, estos datos tienen varios decimales pero yo sólo necesito los dos primeros, por lo tanto en propiedades lo tengo limitado a dos decimales, lo que ocurre es que cuando sumo estos campos en el informe, access lo redondea al alza, ¿hay alguna manera de ver sólo 2 decimales y que no redondeé?

1 respuesta

Respuesta
1
Como ya te habrás dado cuenta, Access lo único que hace cuando le das un formato a un numero con menos dígitos decimales que su definición original, es ocultar el sobrante (con respecto al formmato que tu hayas pedido), pero solo eso: OCULTARLO. Por ello, como el resto de dígitos siguen existiendo, aunque no se muestren, los tiene en cuenta y redondea los anteriores...
Por desgracia, la propia función Format hace exactamente lo mismo, ya que Access sigue para todas sus funciones este mismo criterio, por que para él es el acrtado... aunque yo, como tu, crea que no es así...
Hay una forma de hacer que los campos correspondientes de la pantalla muestren el número con dos dígitos unicamente y sólo tenga en cuenta éstos para las operaciones matamaticas. Bueno, en realidad lo que hacemos con lo que te planteo a continuación es crear un nuevo "dato" formado por la parte entera del campo original y sus dos primeros decimales, ni uno más ni uno menos, ni ocultos ni no ocultos, evitando el problema que tendríamos al trabajar directamente con el campo de la tabla.
Aquí te doy dos posibles soluciones, que aunque parezcan un cutrez, te aseguro que es a lo que hay que recurrir en estos casos, ya que no hay nada definido:
Formato([TuCampoNumerico]-0,005;"#.##0,00")
ó
CDoble(SiInm(EnCad(1;[TuCampoNumerico];",")>0;Medio$([TuCampoNumerico];1;EnCad(1;[TuCampoNumerico];",")+2);[TuCampoNumerico]))
¿QUÉ cuál utilizo yo profesionalmente? La primera, por supuesto... Pero te pongo la otra porque me la acabo de currar para darte otra posible opción por si la primera no te gustaba... Es más, tu mismo puedes crear otras posibles soluciones utilizando el código y funciones que creas necesarias, pero eso si: Siempre usando código y funciones, porque otra solución no hay.
¿Cómo usar esas sentencias? Si tienes esos campos con decimales vinculados en el formulario usando objetos textbox, etc., coge el origen de datos de cada uno de esos objetos y sustituye el nombre de campo que ahora tienen por la función arriba indicada (te recomiendo la primera) poniendo donde ponde TuCampoNumerico el nombre del campo que corresponda para ese objeto.
Si en cambio lo quieres utilizar internamente por código para hacer las operaciones, coge el código de arriba tal-cual y pon el nombre del campo con el que quieras operar.
Si en el formulario quieres que se pueda modificar el valor de este dato tendrás que hacer el control y actualización necesario por código, ya que al formatear el origen del dato para no redondear, pierdes la vinculación directa con el campo de la tabla y por lo tanto dejaras de poder tratar el dato de ésta directamente.
Ya sabes donde encontrarme para cualquier duda o problema que te surja.
Muchas gracias Óscar, es una fantástica solución que para lo que necesito me funciona fenomenal, al igual que tu me he decantado por la primera opción.
Muchas gracias por la respuesta tan rápida.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas