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

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

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

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 »

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

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 :

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.
Commentaires