martes, 28 de septiembre de 2010

Formatos de datos en CRM


Si bien en CRM al hacer consultas a través de la plataforma ya nos devuelve los datos formateados según los datos del usuario que realiza las consultas, muchas veces es necesario recoger esa configuración del usuario para presentar la información según su formato.
De esta forma podremos hacer que nuestros desarrollos sean totalmente "multiformato" y que este se recoja dinámicamente desde el CRM.
Para esto existe una función de SQL Server que provee el CRM que se llama de la siguiente forma:
SELECT * FROM dbo.fn_GetFormatStrings()
Esta función esta documentada en la SDK y se puede llamar de forma soportada. Para mas información acerca de esta función ir a: http://msdn.microsoft.com/en-us/library/bb955087.aspx
Esto devuelve una serie de datos relacionados con el usuario que realiza la consulta (con la autenticación de Windows Integrada) que nos servirán para luego formatear cualquier tipo de dato.
Esto nos devuelve por ejemplo:
  • DateFormat: dd\/MM\/yyyy
  • TimeFormat: hh\:mm tt
  • NumberLanguageCode: en-GB
  • CalendarType: Gregorian
  • NumberFormat_0_Precision: ###,###,###,##0;-###,###,###,##0;0
  • NumberFormat_2_Precision: ###,###,###,##0.00;-###,###,###,##0.00;0.00
  • CurrencyFormat_0_Precision: "£"###,###,###,##0;-"£"###,###,###,##0;"£"0
  • CurrencyFormat_2_Precision: "£"###,###,###,##0.00;-"£"###,###,###,##0.00;"£"0.00
Entonces estos resultados podemos usarlos en C# para formatear datos, por ejemplo:
DateTime dtfecha = new DateTime(2010, 1, 1);
double dblNumero = 587125635.66;

Console.WriteLine(dtfecha.ToString(@"dd\/MM\/yyyy"));
Console.WriteLine(dblNumero.ToString(@"###,###,###,##0;-###,###,###,##0;0"));
Console.WriteLine(dblNumero.ToString(@"""£""###,###,###,##0.00;-""£""###,###,###,##0.00;""£""0.00"));
Esto nos devuelve:

Y listo! de esta simple manera, dejaremos nuestros desarrollos en multiformato recogiéndo los mismos desde el CRM.

un abrazo 

No hay comentarios:

Publicar un comentario