none
Formatear números RRS feed

  • Pregunta

  • Buenos días, mi consulta es la siguiente:

    si podría formatear desde transact para que mi store devuelva todos los números con el siguiente formato: miles,enteros.decimales

    Ejemplo: 5,563.02

    Lo e intentado en castearlo de diferentes formar, en primera instancia sí me sale cuando no lo pruebo en mi store, y al hacerlo éste no me devuelve cómo yo quisiera, tengo 2 cursores en él, no se si tenga algo que ver.

     

    La forma en cómo casteo es esta: CAST(@metrado AS money) también ya probé con esta: CONVERT (varchar(17), CAST(metrado AS money), 1)

     

    Agradesco su ayuda!


    Lima - Perú Rafo*
    jueves, 14 de julio de 2011 16:53

Respuestas

  • En la casilla donde hayas puesto tu dato en Reporting Services puedes decirle que formato tiene, (opción format en inglés, no se como es en castellano)  Si en esa opcion pones este formato #,##0.00 te aparecerá el número formateado según tu configuracion regional, es decir si tienes , como separador de miles y . como separador decimal pues así y si es de otra forma.. pues como lo tengas.

     En general es mucho mejor formatear esto en la herramienta de cliente, con una única excepción, las sumas y los acumulados, si sumas algo, asegurate que lo acumulas de la misma forma, porque si muestras 2 cifras decimales, pero tu dato vale, por ejemplo 0.254 y 0.254, tu usuario verá 0,25  luego 0,25 y en total 0,51. En cuyo caso te dirá que no sabes sumar....

     

    También puedes hacer cosas mucho más avanzadas como puedes ver aquí.

    http://msdn.microsoft.com/en-us/library/ms157328.aspx

     


    Comparte lo que sepas, aprende lo que no sepas (FGG) http://www.portalsql.com
    lunes, 18 de julio de 2011 15:40
    Moderador

Todas las respuestas

  • Rafael,

    A mi entender, el formato es parte de la capa de presentacion y no de la base de datos. De seguro la herramiento de reporte o lenguaje de programacion que usas tienen la funcionalidad requerida para dar el formato deseado.

    Dicho lo anterior, trata convirtiendo el valor al tipo "money" y luego a caracter.

    SELECT CONVERT(varchar(35), CONVERT(money, 1234.5678), 1) AS c1;
    GO
    
    /*
    
    1,234.57
    
    */
    


    Chequea la funcion CONVERT en los BOL, para mas info.

     

     

     


    AMB

    Some guidelines for posting questions...

    jueves, 14 de julio de 2011 17:31
  • Exacto, utilizo el reporting services para realizar una exportación a excel; al darle formato de número me lo formatea al reves de lo que y quiero, es decir miles.unidades,decimales (5,2012.01) cuando quisiera que sea lo contrario ..
    Lima - Perú Rafo*
    jueves, 14 de julio de 2011 17:37
  • Hola.

    Seguramente estás tratando de resolver el problema donde no lo tienes. Me temo que el problema está en el Excel al que llevas los datos, donde las posibilidades de precisar el formato no son tan claras. Yo lo que suelo hacer es volcar como cadena de caracteres, de lo poco que Excel permite sin que haga sus conversiones. Pero yo de Excel sé muy poquito.

    Si quieres, movemos el hilo al foro de Reporting Services con el fin de que en este foro te den una indicación que te permita fijar el formato que tú deseas.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    jueves, 14 de julio de 2011 20:28
    Moderador
  • Dale, con tal que me puedan ayudar :D
    Lima - Perú Rafo*
    jueves, 14 de julio de 2011 22:18
  • Buenos días, mi consulta es la siguiente:

    si podría formatear desde transact para que mi store devuelva todos los números con el siguiente formato: miles,enteros.decimales

    Pregunta: ¿de qué TIPO es el dato que devuelve el SP? Si es un varchar, sí que lo puedes formatear y devolver con el formato que quieras. Pero si es un tipo numérico, tienes que tener en cuenta que esos tipos NO TIENEN FORMATO. Sólo devuelven el dato en binario, y el formato lo pone el programa cliente que estás usando para llamar al SP. Por lo tanto si el programa cliente es por ejemplo SQL Server Management Studio, puede ser que te lo visualice con un formato, mientras que si el programa cliente es Excel, te presente otro formato. Y esos dos formatos no dependen para nada de lo que hagas dentro del SP, mientras el tipo siga siendo numérico. La alternativa es devolver un varchar, que sí que lo puedes formatear, pero claro, en la parte cliente se tratará como un string y no como un número.

     

    sábado, 16 de julio de 2011 6:04
    Moderador
  • el tipo de dato del campo es float.. mi variables también es float, lo he estado casteando para que me lo devuelva en money y hasta e nvarchar y sí, lo devuelve; hasta en varchar en el SP me lo devuelve cómo yo lo necesito, pero al visualizarlo en el Reporting me aparece de otra forma, hasta algunos valores se me presentan en decimales..
    Lima - Perú Rafo*
    lunes, 18 de julio de 2011 14:06
  • En la casilla donde hayas puesto tu dato en Reporting Services puedes decirle que formato tiene, (opción format en inglés, no se como es en castellano)  Si en esa opcion pones este formato #,##0.00 te aparecerá el número formateado según tu configuracion regional, es decir si tienes , como separador de miles y . como separador decimal pues así y si es de otra forma.. pues como lo tengas.

     En general es mucho mejor formatear esto en la herramienta de cliente, con una única excepción, las sumas y los acumulados, si sumas algo, asegurate que lo acumulas de la misma forma, porque si muestras 2 cifras decimales, pero tu dato vale, por ejemplo 0.254 y 0.254, tu usuario verá 0,25  luego 0,25 y en total 0,51. En cuyo caso te dirá que no sabes sumar....

     

    También puedes hacer cosas mucho más avanzadas como puedes ver aquí.

    http://msdn.microsoft.com/en-us/library/ms157328.aspx

     


    Comparte lo que sepas, aprende lo que no sepas (FGG) http://www.portalsql.com
    lunes, 18 de julio de 2011 15:40
    Moderador
  • Lo probaré y luego te aviso!, gracias
    Lima - Perú Rafo*
    lunes, 18 de julio de 2011 16:13