Il reste alors une solution : modifier la propriété Language de mes rapports. Problème, il y en a 800 éparpillés dans toute une arborescence bien complexe. Un ajout en masse de la balise Language dans le code XML du rapport ne pose pas de soucis, mais le déploiement sera fastidieux.
Du coup, sur les conseils éclairés d’un collègue (François pour ne pas le nommer) : on peut faire un truc sale qui consiste à modifier les paramètres du rapport à son lancement (en gros, écrire dans le XML). Chose facilité par le fait que l’exécution de ces 800 rapports est géré via du C#. Cool, une grosse partie du boulot est fait : on va utiliser les classes et méthodes du WSDL référencé dans le projet pour l’exécution des rapports. Ah, premier soucis, on utilise le Web Service ReportService2005 pour lequel je ne trouve pas de méthode de modification des paramètres d’un rapport. Un petit tour sur la MSDN (http://msdn.microsoft.com/en-us/library/ms155398.aspx et au passage il y a une erreur dedans, ce n’est pas le full path qui est nécessaire pour leurs méthodes, juste l’arborescence RS jusqu’au rapport) pour s’apercevoir qu’en fait, il existe trois Web Service différents. Super pratique d’en faire autant quand même !! Donc, celui qui permet de tout faire, sauf de l’exécution de rapport c’est ReportService2010. Je vous passe les classes et méthodes pour ne retenir que SetProperties() de ReportingService2010. On se fait une petite méthode de ce type :
private void ModifyProperty (string
propertyName, string propertyValue, string reportPath)
{
Property[]
props=new Property[1];
Property
setProp=new Property();
setProp.Name=propertyName;
setProp.Value=propertyValue;
props[0]=setProp;
myReportingService2010.SetProperties(reportPath,
props)
}
On exécute et… on se rend compte que la propriété
Language est Read-only.
System.Web.Services.Protocols.SoapException:
The property 'Language' is read-only and cannot be modified or deleted.
Pourquoi ? Bonne question, je n’ai pas trouvé de
documentation, donc si vous en avez, je suis preneur. En tous cas, les prochains qui tenteront le coup
sont maintenant prévenus (je vous rassure quand même elles ne sont pas toutes inaccessibles).
Aucun commentaire:
Enregistrer un commentaire