Search code examples
visual-studioreporting-servicesgraphicsvisualizationpie-chart

Can I make a circle/table graphic in SSRS and divide it by a passed number


I was asked to create a report (in SSRS visual studio 2019).

The report has the following table number, numeric. How many people per table (generally 4-12), names, etc and the order in which the people will sit. From this I'm being asked to create is a graphic visualization of a circle (broken out evenly by number of guests per table) in the order of which they are seated.

For example here is my data set:

enter image description here

I need to create a seprate page with the lists below so it would like like this

Page 1 would have this: Table 1 - 8 Guests

enter image description here enter image description here

Page 2 would have this: Table 2 - 4 Guests

enter image description here enter image description here

we can also use embedded images -- the team has an image for each table size but we still have to obtain the locations of each spot (which means we'd have to know how to divide a circle)


Solution

  • You can do this easily.

    Add a list or single column table and the set Dataset property to your dataset name.

    Change the row group (probably called "details") by adding a group that groups by table.

    Now insert a pie chart into the table cell. We should now get 1 pie chart per table.

    Click the pie chart and add a value entry, set the value expression to =1/countrows(), this bit will just split the chart up evenly based on the number of guests.

    Set the category group to the guest field.

    Right-click the chart and "Show data labels", then right-click the label and set the value to this expression =Fields!id.Value & " - " & Fields!guest.Value. Set the data label position property to "outside".

    Finally click the chart and expand the "custom attributes" section, set the PieStartAngle property to 270, this will make sure the first person is immediately after the 12 o'clock position.

    Oh,. and set the chart title to something like `="Table " & Fields!table.Value"

    The final output looks like this...

    enter image description here