Friday, July 22, 2011

ANONYMOUS LOGINS TO SSRS

Here are some notes I have collected to open up SSRS for anonymous logins and the errors you may see

Stored Credentials and Anonymous Logons and Browsing in Reporting Services Does not work rsAccessDenied   rsErrorOpeningConnection
The permissions granted to user are insufficient for performing this operation. (rsAccessDenied)
rsErrorOpeningConnection Windows NT user does not have server access.
1.       Folder Security
a.        Open up report manager >> home .>> Folder Settings
b.       Add BUILTIN\Users as BROWSER ROLE
c.        Add BUILTIN\IIS_IUSRS as BROWSER ROLE
d.       Apply
2.       Store Credentials (do for each datasource)
a.        Open Report Manager >> Home >> Datasources
b.       Click on the datasource
c.        Add the credentials to the database under “Credentials stored securely in the report server”
d.       Do not check the other two boxes.  ** Unless using domain account ??
e.       Apply
3.       Reporting Services Service Account
a.        Open reporting services configuration manager
b.       Click Service Account
                                                               i.      Make note of the account used.
c.        Click on Execution Account
                                                               i.      Make note of the account used
4.       Grant allow log on locally
a.        Administrator tools >> Local Security Policy
b.       Security Settings >> Local Policies >> user Rights Assignment
c.        Log on Locally
                                                               i.      Add the two accounts found above as grant.

Friday, July 1, 2011

SSRS (Reporting Services) Separate Legend (as Tablix) From Chart or Graph with Drilldown Links

I am often frustrated with SSRS's legend layout.  My legend items are often wrapped or too small and my chart of graph is squeezed to make everything fit properly.  The other problem is the legend item does not allow the users to click on the items to drill through to the details.

An easy solution is to make a separate legend as a tablix outside the graph which can be hidden.  This gives you the added ability to create drill through links and allow the users to easily see the totals.

Below I give you two examples.  1) Using standard colors where you don't care what color the items are.  2)  The color needs to reflect the data (ie Red, Yellow, Green .... Bad, Warning, Good).






1.      Open the report
2.      Click REPORTS under the main menu >> REPORT PROPERTIES
3.      Click CODE
4.      INSIDE THE CODE BOX TYPE / COPY one of the following (standard or custom)

[STANDARD COLORS]

Private colorPalette As String() = {"Green", "Blue", "Red", "Orange", "Aqua", "Teal", "Gold", "RoyalBlue", "#A59D93", "#B8341B", "#352F26", "#F1E7D6", "#E16C56", "#CFBA9B"}
Private count As Integer = 0

Private mapping As New System.Collections.Hashtable()

Public Function FillColor(ByVal groupingValue As String) As String
    If mapping.ContainsKey(groupingValue) Then
       Return mapping(groupingValue)
    End If

    Dim myColor As String = colorPalette(count Mod colorPalette.Length)
    count = count + 1
    mapping.Add(groupingValue, myColor)
    Return myColor
End Function


[CUSTOM COLORS]    Public Function FillSpecificColor(ByVal ProblemCode As Integer)
        Dim ReturnColor As String = "Violet"
        Select Case ProblemCode
            Case 300
                ReturnColor = "DarkGreen"
            Case 1
                ReturnColor = "Red"
            Case 2
                ReturnColor = "#C60000" ' Dark Red
            Case 3
                ReturnColor = "#FF3E3E" ' Light Red
            Case 4
                ReturnColor = "#930000" ' Darker Red
            Case 5
                ReturnColor = "#FF8484" ' Lighter Red
            Case 6
                ReturnColor = "#FFD5D5"  ' Pink                 
            Case 7
                ReturnColor = "#3E0000"  ' Brown
                '--------------------------------------- 
            Case 100
                ReturnColor = "Yellow"
            Case 101
                ReturnColor = "#D5D500" ' Dark Red
            Case 102
                ReturnColor = "#FFFF48" ' Light Red
            Case 103
                ReturnColor = "#C6C600" ' Darker Red
            Case 104
                ReturnColor = "#FFFF77" ' Lighter Red
            Case 105
                ReturnColor = "#A8A800"  ' Brown yellow               
            Case 106
                ReturnColor = "#FFFFB9"  ' Beige    
                '--------------------------------------- 
            Case 200
                ReturnColor = "#009100" ' Shade lighter than Dark Green (300)
            Case 201
                ReturnColor = "#00BB00" ' Shade lighter than above
            Case 202
                ReturnColor = "#00DF00" ' Shade lighter than above
            Case 203
                ReturnColor = "#17FF17" ' Shade lighter than above
            Case 204
                ReturnColor = "#48FF48"  ' Shade lighter than above          
            Case 205
                ReturnColor = "#AAFFAA"  ' Shade lighter than above   
            Case 206
                ReturnColor = "#D9FFD9"  ' Shade lighter than above               
        End Select
       
        Return ReturnColor
    End Function

5.  Now create a table on the page and add the field you used for the chart grouping as in the second column of the details row.
      6.  Now in the properties of the ROW GROUPINGS you just created ADD a grouping as that field

7.   Now in the first column second row (where your color will go) >> Text Box Properties >> FILL
8.  Fill Color Table >> Fx
a.      STANDARD
                                                              i.      Fill Color =Code.FillColor(Fields!Problem.Value)  where problem is your grouped field
b.      CUSTOM
                                                              i.      Fill Color =Code.FillSpecificColor(Fields!ORDER.Value)  where ORDER also serves as a color coder (ie 1 = RED 300 = Dark Green)
9.  Right + Click your chart >> SERIES PROPERTIES >> FILL COLOR
10. Fill Color Table
a.      STANDARD
                                                              i.      Again =Code.FillColor(Fields!Problem.Value)
b.      CUSTOM
                                                              i.      Again =Code.FillColor(Fields!ORDER.Value)
11.  Create a merged cell for the header and add your chart title
12.  Now delete your title and legend and drag your new legend as close to the chart as possible.


OPTIONAL:  Add a calculated column for the totals and percentages.
OPTIONAL:  Use the legend title as toggle button to hide / show the legend saving space.
OPTIONAL:  Split the table using two Tablix and a filter to put half the legend items on the left and half on the right.