Utiliser le code embarqué dans les rapports « Reporting Services »

Lors de la conception de rapports, il peut être utile de déporter certains traitements directement dans le rapport. Microsoft, dans sa solution Reporting Services, offre la possibilité d’utiliser du code embarqué littéralement « embedded code » en anglais.

L’utilité, me direz-vous ? Pouvoir réaliser un traitement sur les données récupérées depuis le dataset, traitement qui serait laborieux ou tout simplement impossible à faire depuis la requête SQL ou la procédure stockée.

Dans mon exemple, nous allons procéder à la création d’une fonction permettant un traitement sur une date. Ce traitement, aussi simple qu’il soit, permettra de transformer une date pour qu’elle soit formatée correctement en français. Cette dernière transformera une date sous la forme « 1 juillet 2012 » en «1er juillet 2012 ».

Dans la suite de ce ticket, nous supposerons que le rapport est déjà créé et qu’il possède un dataset permettant la récupération d’une colonne de type « Datetime »

Accéder au "embedded code"

Pour pouvoir créer ou modifier le « embedded code », il vous faut accéder aux propriétés du rapport. Pour cela : Menu > Rapport > Propriétés du rapport


1_report_properties.png

Une fois les propriétés ouvertes, un onglet « Code »
apparaît.

2_report_properties.png

Il suffit ensuite d’écrire son code VB et de valider

3_report_properties.png

Le code permettant le traitement de la date est le suivant :

 

Public Shared Function GetLitteralDate(ByVal  myDate as Date) As String

                GetLitteralDate =
String.Empty

                If(DatePart(DateInterval.Day,myDate)=
1) Then

                               GetLitteralDate  = "1er " & Format(myDate,
"MMMM yyyy")

                Else

                               GetLitteralDate
= Format(myDate, "d MMMM yyyy")

                End If

End
Function

Voilà donc une simple fonction en VB réalisant le traitement désiré
sur la date passée en paramètre.

Maintenant
que la fonction est écrite nous allons voir comment l’utiliser sur les données
du rapport.

Sur la zone
de texte sur laquelle vous voulez appliquer la fonction, faîtes clic-droit >
Propriétés de la zone de texte
(Un double-clic est également possible). Pour la suite de ce ticket, nous ferons le
traitement sur le champ « DateReceptionDossier »

0_field_properties.png

Ensuite dans  « Valeur »,
cliquez sur « Fx ».

1_field_properties.png

Il suffit alors d’insérer le code suivant qui fait référence à la
fonction créée précédemment.

=Code.GetLitteralDate(First(Fields!DateReceptionDossier.Value,
"MyDataset"))

Test

Il est
désormais temps de tester l’appel de cette fonction. Pour cela, assurez-vous d’avoir
un jeu de données ayant une date au premier jour du mois.

Pour mon
test j’ai pris un enregistrement en base de données pour lequel la valeur de « DateReceptionDossier »
est   « 2010-09-01 00:00:00.000 ».

Voilà le
résultat à l’exécution du rapport : 

result.png

Nous pouvons
voir que la date a bien été formatée grâce à la fonction « GetLitteralDate » .

Conclusion

L’utilisation
du code embarqué sur un rapport Reporting Services est intéressant et permet de
centraliser un traitement au sein d’un rapport. 
Dans notre cas, nous aurions pu utiliser la méthode « GetLitteralDate »
pour un nombre infini de champs dans le rapport. Le code embarqué permet
également de réaliser un traitement plus ou moins complexe, sans avoir à toucher
à la requête du Dataset.

On peut
toutefois déplorer le fait de ne pas pouvoir utiliser directement du code en
VB.Net ou en C# .Net. L’utilisation d’une bibliothèque de classes aurait
également permis de pouvoir faire appel à une même méthode / fonction depuis
plusieurs rapports sans avoir à la dupliquer au sein de chacun de ces derniers. Nous ne pouvons donc qu'espérer que Microsoft fasse évoluer cette fonctionnalité dans les versions à venir, notamment la version 2012.

Un commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.