Counting Occurrences in a Concatenated String
*The Request
- I have a report that has two data sets that I am using a lookup to get the value needed. The returned value could be either "Completed", "In Progress", "Not Started". What I want to do is get the Sum of the "Completed" data elements returned. I have used this expression to look up the data set
=join(Lookupset(Fields!Job_Name.Value, Fields!Job_Name.Value, Fields!Activity.Value, "dataset2"),",")
When I use the above expression I get a column with the values concatenated within the text box like this:
-- Completed, Completed, Completed, In Progress, Not Started --
What I want to do it get the sum of the "Completed" occurrences. So the answer I am looking for is "3".
*The Solution
- You can use custom code in your report. Since you would be using all core VB.Net functionality you would not need to add any custom references. Here is what I did:
Function SumOccurrence(s As String, f As String) As IntegerDim rtn As Integer = 0 Dim occ As String() = s.Split(",") For Each el As String in occ If el = f Thenrtn = rtn + 1 End IfNextReturn rtnEnd Function
So the number of "Completed" Activities could be found with:
=Code.SumOccurrences(join(Lookupset(Fields!Job_Name.Value, Fields!Job_Name.Value, Fields!Activity.Value, "dataset2"),","), "Completed")
So the number of "In Progress" Activities could be found with:
=Code.SumOccurrences(join(Lookupset(Fields!Job_Name.Value, Fields!Job_Name.Value, Fields!Activity.Value, "dataset2"),","), "In Progress")
Etc.
***Related Info
***Forum Post