There are numerous circumstances when we wish to add a custom function to a SSRS report in order to cater for needs of the customer which exceeds the capability of the built-in functions in SSRS. In these scenarios we will have to write our own functions. In this article I will demonstrate how to add custom code to SSRS.
Using SQL Server 2008 R2 Business Intelligence Studio
Using Custom Code inside a report: In this article we will consider a scenario where we want to design a KPI using custom code inside a report using the code tab of the report properties. For this we will have to write the below VB code as VB is the only language currently supported for the custom code in SSRS. Create a new SSRS project in BIDS studio and add new item as a report from the templates.
1. Create
a dataset using AdventureWorks as datasource the following query:
SELECT top 1 Name, StandardCost, ListPrice, ListPrice - StandardCost AS ProductProfit FROM Production.Product WHERE (StandardCost >= 1000)
2. Select Report-> Report Properties from the menu.
3. Select Code tab from the report property window
4. At present only VB supported for writing custom code inside
the report. Copy and paste the below code in the code window and click ok:
Public Shared Function Test(ByVal profit As Decimal) As String Dim st As String If profit >= 1000 Then st = "High Profit" ElseIf profit >= 500 Then st = "Moderate Profit" Else st = "Average Profit" End If Return st End Function
5. Right-click on the textbox and go to expressions.
6. To call the function written in the custom code window you will have to enter Code.FunctionName . In the expression in our example it would be something like this:
=Code.Test(Fields!ProductProfit.Value)
7. The final Output should be something like this.
Using Custom Assemblies:
The custom assemblies can be created using a class library project to create more advanced functionality for your reporting solution. The code reference for function to be used in the reporting services can be given in the references section in the report properties. To do this create a custom assembly and create a class library project called TestClass and add the below code to it:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TestClass { public class Class1 { public static int Cal(int a, int b) { return a + b; } } }