Archives for: "March 2011"
Standardizing and Centralizing Report Design (or: creating style sheets for reports) Part 3: The Style-Template
Mar 21st
In the first part we learned how to integrate a Layout-Template into BIDS. The second technique in this series we are looking at will be using the “Style-Template”.
What is a Style-Template?:
Style-Templates are a set of definitions such as font size, font type, font color, background color, border styles, etc., which is being used from within the “Add New Report” wizard inside Business Intelligence Development Studio.
Report Layout-Templates are shown in the Project-Dialogue “Add“ – “New Item“ .
This is where you usually chose among those beautiful styles, that Microsoft provides you with (Slate, Forest, Corporate, Ocean, Bold, Generic) .
But: you can include your own style definition!
And this is how we can create a Style-Template:
1) Open the file StyleTemplates.xml from the following location (watch for your locale specific folder at the end) using your favorite XML Editor (notepad is sufficient):
for Reporting Services 2005
•%ProgramFiles%\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\Business Intelligence Wizards\Reports\Styles\en
for Reporting Services 2008 x64
•%ProgramFiles%\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\Business Intelligence Wizards\Reports\Styles\en
for 32-bit Reporting Services 2008
- C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\Business Intelligence Wizards\Reports\Styles\en
2) I strongly advice you create a backup of StyleTemplates.xml before you edit it:
3) Look for a complete “StyleTemplate”-node like “<StyleTemplate Name="Slate"> … </StyleTemplate>” and copy it to the end, just before the Generic-Style (<StyleTemplate Name="Generic">)
4) Rename the copied definition
5) Now you can start changing colors, border styles, fonts etc.
You will find out, that not everything will be accepted. There is no documentation and so far this is what I can give you as a set of rules I found out the hard way – hope it helps saving you time:
Rules of engagement for producing a Style-Template:
- Backup StyleTemplates.xml before editing it!
- Watch out for whitespaces and line breaks. Otherwise you will get Error messages such as “Red is not a valid color”.
- Not all Attributes are supported and give you an error when running the wizard.
- I.e. <TopBorder> etc.
- Some fail silently like “<BorderWidth>”
- Color values have no spaces between words
- “Dark Olive Green” is coded “DarkOliveGreen”
- Font names can include spaces
- <FontFamily>Times New Roman</FontFamily>
- TextAlign does not work in "Table Header" – sometimes align in header rows is out of order for no reason
- default font for table does not work here either
Sample Style-Template code:
<StyleTemplate Name="Pizza_Time"> |
You can of course include several sets of Style-Templates.
How to test?
Just run the “Add new Report”-wizard from inside BIDS, and you will see your own style appear in the list. Unfortunately there will be no picture-preview for user defined styles, so use a descriptive name.
And again, just like the Layout Templates, you could xcopy deploy this folder to all your Developers machines.
How about “centralizing”?
- Just as Report Layout Templates you can “xcopy deploy” this folder regularly to all your Developers machines.
- But again: once the reports are created, and you make a change to the originating template, existing reports will not be touched.
How about “standardizing”?
- If you “xcopy deploy” this folder regularly to all your Developers machines, all developers can easily use the same colors and fonts for newly created tables & matrixes.
In short: What Style-Templates can be used for:
- If you like using the „New Report“-wizard for quickly starting a report:
- Have the first Table or Matrix finalized with the corporate-design colors and font-styles
- Includes a report-title and body-color
Note:
- Does NOT apply to elements added thereafter
- Once the report is created, the style is hard-coded
References:
the only reference with code samples on the web is this post from 2004 here by a Microsoft guy:
http://www.ms-news.net/f3037/styletemplates-xml-tags-2920674.html#post9344712
The second link I’ll provide just gives a general overview over the two methods “Report (Layout) Template” and “Report Style Template”:
http://blogs.microsoft.co.il/blogs/yanivy/archive/2010/08/03/create-custom-templates-and-styles-for-ssrs-2008.aspx
In the next Part of the series, I will show how to use custom code for managing style.
Andreas
Standardizing and Centralizing Report Design (or: creating style sheets for reports) Part 2: The Layout-Template
Mar 13th
As a first technique in this series we will look at what I will call “Layout template”.
I chose the Term “Layout-Template” for two reasons:
first: the main thing that they can be used for is, to define general report sizing, footer and header elements – in other words, the overall layout of the report.
secondly: in the next part of this series we will see a different type of template which will actually be called “Style-Template”.
So, what is a Layout-Template?:
A Report Template can be as simple as a standard report with a certain page width and height, certain colors, a standard company logo etc., which can be copied over and over again.
Here the Problem is, how to avoid to overwrite the defined Report Template unintentionally, and, how to make it easily available.. even (report-)project-independent.
And this is where “Layout-Templates” come at hand.
Report Layout-Templates are shown in the Project-Dialogue “Add“ – “New Item“ .
There you can choose a Template and it will create a copy local to your project – and not overwrite the Rdl at its original location.
And this is how we create a Report Layout-Template:
1) Simply create a regular report, configure size, header and footer and so on. You could create a data region, but it would make little sense – just as a sample maybe.
2) Then you put the .rdl-file in the following location:
for Reporting Services 2005
- %ProgramFiles%\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\ProjectItems\ReportProject
for Reporting Services 2008 x64
- %ProgramFiles%\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\ProjectItems\ReportProject
for 32-bit Reporting Services 2008
- C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\ProjectItems\ReportProject
3) and when you right-click at the reports-node in your project, click “Add“ and then chose “New Item“, your Report Templates will appear in the “Add New Item” box:
That’s it. Very simple.
How about “centralizing”?
- You can “xcopy deploy” this folder regularly to all your Developers machines.
- But: once the reports are created, and you make a change to the originating template, existing reports will not be touched.
How about “standardizing”?
- If you “xcopy deploy” this folder regularly to all your Developers machines, all your reports should have the same Layout in terms of sizing, header&footer.
In short: What Layout-Templates can be used for:
- Having predefined report size, (i.e. landscaped and portrait version)
- Include report-header and footer with corporate design and navigational elements
- Can even include sample data-regions with appropriate fonts and colors
In the next Part of the series, you will see how to create and use a Style-Template.
Andreas
Standardizing and Centralizing Report Design (or: creating style sheets for reports) Part 1: The possibilities
Mar 10th
While SQL Server 2011 (Denali) is at horizon, bringing up many changes in the way reports will be developed, Developers using SQL Server 2005, 2008 or 2008 R2 are still faced with on problem from the very first report on: How can I make not only development easier by having a template for reports at hand, but also, how to manage it.
Whereas in the area of webdesign, it is absolutely common to have a (cascading) style sheet to be referred to in all website-documents, in reporting services this concept does not exist.
While this is very annoying and it seems that it should be easy to implement at first, one has to remember, that Reporting Services does not just render to html, but at the same time Reporting Services have to be equally prepared to render Reports to Excel-Files, pdf-Files, TIFF-Image-Files, among others. So using the same technique as websites do, would simply to narrow.
There is a case at Microsoft Connect, where you can vote on this feature to get implemented in an upcoming version: http://connect.microsoft.com/SQLServer/feedback/details/253976/add-style-or-stylesheet-or-template-to-reporting-services-reports
In short: In Reporting Services there is no such one thing as ONE and only style sheet that does all magic for you.
This blog-series is intended to show you the existing techniques, and how to combine them. In the end your effectiveness in creating an managing Reports style-wise can be improved by a magnitude. But: there is work to do beforehand.
I spend quite a while, reading other blogs, the rare documentation and doing my own tests. Finally I had the honor of presenting a whole session on this matter at the European PASS Conference 2009.
In the following posts I will concentrate on the existing techniques I identified as the most useful techniques and combination.
Those are the techniques I will focus on:
The Basic Techniques:
Custom methods:
- Using Custom Code
- Using an Assembly
- Using plain T-SQL
Combining techniques:
- Style Template + Layout Template
- Style Template + Custom style + Layout Template
Reporting Services 2008 R2 techniques
- Shared DataSet
- Report Part
I also tested using XML-Files as well as making a webservice-call to get Style-data, but this turned out to be rather pathological and is therefore left out from further consideration.
In the next Part of the series, I will show how to create and use a Layout-Template.
Andreas