martes, 26 de mayo de 2009

Como cambiar la Cultura en Reporting Services (rdlc)

Globalization, Changing Culture of Reporing Services (RDLC)

Hace unos días tuve que hacer un projecto el cual debía trabajar con varios Idiomas (Globalization) y como reporteador utilizamos Reporting Services de forma desconectada o Reporting Services Stand Alone. Los reportes tipo RDLC cuando se trabajan en el diseño es posible cambiar la cultura o el idioma del reporte por medio de la propiedad Language, pero en tiempo de diseño no esta tan sencillo como cambiar una propiedad.

En nuestro caso, la aplicación podría cambiar de cultura al momento de iniciar, lo que nos trajo un problema con los reportes. Este problema yo lo ataque de la sigueinte manera:


'''
''' Este método establece la nueva cultura
''' para el reporte según el parámetro recibido
'''

''' Path del reporte
''' Nueva cultura especificada para el reporte.
'''

Public Shared Sub SetCultureToReport(ByVal ReportPath As String, ByVal Culture As String)
Dim xmlDoc As XmlDocument
xmlDoc = New XmlDocument
'---------------------------------------------
'Read the XML structure of the Report, for get
'the tag 'Language' of the report and
'to modify with the culture of the application.
'---------------------------------------------
xmlDoc.Load(ReportPath)
'---------------------------------------------
'Change the Culture.
'en-US
'---------------------------------------------

xmlDoc.ChildNodes(1).Item("Language").InnerText = Culture
'---------------------------------------------
'Save the Report with the new Culture.
'---------------------------------------------

xmlDoc.Save(ReportPath)
xmlDoc = Nothing
End Sub


Como ven lo que hace el metodo prácticamente es sobreescribir el reporte inicial y con eso se puede trabajar con varios idiomas en tiempo de ejecución. Lo mismo aplica para aplicaciones Asp.Net como aplicaciones Windows Forms.

Espero que sea de utilidad para alguna persona!!!

Saludos!

Visita: InfoDotNet.com y encontraras mucha información acerca de programación con .Net