ReportPax has been retired. The latest (and last) version is now available to download for free here:
I can’t offer any support unless you were an existing customer.
What was ReportPax?
ReportPax was a software product I published to help users print labels in Reporting Services. It did well, but public interest has waned and it has not been kept up to date. Below is an archive of what was on the reportpax.com site.
– 5 report Templates in both Reporting Services and ReportViewer Component format (.rdl and .rdlc)
– Quick Start Guide: Reporting Services
– Detailed steps to get you printing your labels quickly in Reporting Services
– Quick Start Guide: ReportViewer
– Detailed steps to get you printing your labels quickly in ReportViewer Component
– Full Source for the ReportViewer Sample Application (in C# and VB.Net)
– Additional examples (printing labels Down then Across and Grouping labels)
Can I print labels from reports exported to PDF?
Yes it does work, with one caveat. This goes the same for any report exported to PDF. You might have noticed that the margins were off when you tried to print. There is one important setting you must change when printing from Adobe Reader that trips people up (myself included).
When the Print window opens in Reader, simply set Page Scaling to None.
Then when you print, your margins and alignment should be correct now.
What is the difference between .RDL and .RDLC files?
Well the .RDL files are for Reporting Services and the .RDLC files are for the VS.NET 2005 ReportViewer Component. The “C” in .RDLC simply stands for Client and that is the main difference. The .RDLC files do not store any query specific information (or in other words, how to get your data). This is the responsibility of the application you use your reports with.
However the two files share the same XML format and can be converted back and forth:
Can I print labels from SQL Reporting Services to a dot matrix printer (impact printer)?
I’m a fan of dot matrix printers (impact printers). They just work and they are cheap. However I would say that Reporting Services is the wrong tool for the job. Most reporting software does not handle individual continuous feed labels (and SRS is no exception). What I have done in the past was to fit the max amount of labels that will fit on a standard paper size and design the report around that. This has issues, as the page header/footer can usually not be set small enough to not affect the alignment of the labels. Sometimes it does work, but you’ll notice each successive label’s alignment will be slightly off until the next page starts.
If anyone does have success with printing labels from Reporting Services to a dot matrix printer, let me know!
Doesn’t Reporting Services include functionality to print labels?
No. Not even in their latest version and I wouldn’t look for it anytime soon.
How can I make the first line bold of each label.
To apply separate formatting to individual lines of a label, you must split the table into multiple rows.
For example, the 30 Labels per page template contains only one row and you want the top line to be bold. First add a row by right clicking the current row and click Insert Row Below. You can then resize the rows to desired heights. Set the Can Grow property of the new row to False. The final step is to copy the formula in the Visible property to the new row.
Be sure to keep the total table height at 1 inch (for the 30 Labels per page template). Repeat the process for the other two tables.
Check out the 10 Labels per page template for a working example.
How do I eliminate blank lines when printing labels?
Here is a quick tip on eliminating blank lines when printing labels. To give you an example of this, let’s say you are printing an Address Line 1 and an Address Line 2 on your labels. However some records do not have an Address Line 2 and you do not want to have the blank line printed for those labels (similar to the picture below where the first record does not have a company so a blank line is printed):
To fix this, you just need to add some custom code to fit your needs:
1) Bring up the report in VS and click Report -> Report Properties menu item
2) Click the Code tab and paste this code at the bottom:
if field = “” then
return field & chr(13) & chr(10)
3) Now you must edit the Label expression to something like this:
Code.FieldThenNewLine(Fields!City.Value & “, ” & Fields!Region.Value & ” ” & Fields!PostalCode.Value) &
Now a new line will only print if the field is not blank.
Why is the first record printed over and over again?
There are two main things to check:
1) Bad Query – Check that your query is returning the correct results. If using SQL Server you can copy and paste your sql into Query Analyzer. One method that works well to check what sql your report is using, is to use SQL Profiler and start a trace to capture all sql before you run your report. You can then copy and paste from there.
2) Aggregate Functions – Sometimes when you add fields to a report you can inadvertently specify the ‘First’ function which will repeat the same data (the first record) for every record.
Is it me, or is writing reports in the ReportViewer component really a pain?
No, it’s not you. The ReportViewer component takes some getting used to and in it’s current state it is not too easy to create reports in. It is like a crippled version of the much better report creator that is installed with Reporting Services client tools.
It works the same but the biggest drawback is that you can not preview reports on the fly. You have to compile and build your application and then view the report in the application. Microsoft’s logic behind this is that they had to take this functionality out in order to gain a higher level of abstraction. The higher level of abstraction being the ability to link to any type of dataset. Now my developer side agrees with this and thinks it’s a cool feature but the part of me that has to create reports screams bloody murder.
So if you are a report writer, stick with the Reporting Services add in (if you have it) and let the developer deal with converting your file to work with the ReportViewer component.
Do the Report Templates work in VS2008?
Yes they do. In fact the Demo Site was upgraded to .Net 3.5 and Visual Studio 2008. Now you get to use the Print icon! In VS2005, the print icon would only be available if you were running the reports from a Reporting Services server. The work around was to export the report to pdf first, then print.
Other than that, there is not much new in the VS2008 ReportViewer control. Reports are backwards compatible. Below is a list of new Reporting features in VS2008 (from Microsoft’s site):
New Report Projects
Expression Editor Enhancement
It should be noted that the ReportViewer Control is only available in the Standard Version and above (before you go downloading the the Express editions).
Can I print barcodes using the label templates?
Yes, you can use a third party control to print barcode labels in Reporting Services reports. Customer have successfully used Neodynamic Barcode Professional with the ReportPax templates. Simply drop the barcode control on to the label, hook up your datasource to the barcode control and you are done. You can even mix barcodes with text.
How to Use a Sub Report in a Label?
If you need to do some complex layout (like master-detail reports) or formatting for your labels, then linking the label to a subreport is the way to go. This technique does require at least intermediate level skill in the Microsoft report designer.
First you would start by creating your master query. This query would have one row for each label you want to print. Then you would bind this query to the ReportPax label template.You can put what fields you need on this report.
Next, you would create a sub report. This report has smaller dimensions than your label and contains the fields you need. It can also contain the detail records for your report.
Lastly, create a sub report object in the master report and link to your sub report.
– You can pass parameters to sub reports by defining a parameter in the main report and then referencing the parameter in the sub report sql. Like so: “select * from customer where id = @customerid”.
– Make sure you set the Can Grow property to false for the table row in the master report and in the table for your sub report. This way, the labels print correctly if there is too much data for one label.
Can I Reuse Label Paper or Pick a Starting Position for the Labels?
This comes up when you have printed a set of labels and you have extra blank labels on the page. It would be nice to reuse them. However in my experience I would not recommend it. It’s usually more of a hassle then any of the money you save. Plus, the labels don’t have to go to waste, they can be used around the office. Lastly, the printer manufacturer’s generally don’t recommend reusing labels (or paper that has already been printed on).
So with that out of the way, if you really want to try, here is a method that might work. The trick would be to pad your data with blank rows. You could do this using a stored procedure in SQL Server that took the start position as one of it’s parameters. Then create a temporary table and loop through and insert as many blank rows as you need. Lastly you would sql union these blank rows with your original label data.
Not the most elegant solution and personally I wouldn’t go through the hassle, but it should work.
Can I use the templates for Index Cards, Post Cards or Form Letters?
They would need to be modifed.
Why are the labels repeating or why are some missing?
If you are getting erratic or unexplainable results after building your label report, the most likely cause is an incorrect Visibility formula on one of the table rows . This can sometimes happen when you finish one table of the label and simply copy it to another table (or column). Here are some items to keep in mind in regards to the Visibility formulas:
1) Each table (column) has its own visibility formula. This visibility formula is set on each row of the table.
2) Don’t confuse the table row Visibility property with the Visibility property on other objects, like the table itself or a cell of the table. You want to make sure the ONLY objects that have the Visibility property set are the table rows.
Whats new in Report Services 2008?
Here is a summary of the new features of SQL Server Reporting Services (SSRS 2008):
– Updated Report Engine – Improves performance
– Rich Formatting – You couldn’t mix styles in the previous version. Now you can and use conditional formatting.
– Integration with a SharePoint Server – What would be the reporting server is now stored in the SharePoint content database. Basically gives a SharePoint look and feel to Reporting Services.
– Tablix Report Item – A new report item that can be dropped on a report. It is a more intuitive way to layout and summarize data.
– Export to Office Word – Additional render options were added including exporting to Word.
– New Gauges and Chart Functionality – The previous version was a little limited, so now you have a few more bells and whistles.
Why aren’t multiple spaces appearing on my report?
While I wouldn’t recommend using spaces for formatting, if you have to they are supported in Microsoft Reporting. However multiple spaces will not appear in the HTML preview when designing a report (or exporting to HTML). The reason this happens is that HTML treats consecutive spaces as one space. HTML does have the non breaking space tag ( ) but it is not supported in HTML view of the reports. However, when you view the reports in ReportViewer or export to PDF, the extra spaces will appear.
Why doesn’t my multi column report work right in the ReportViewer control in an web page or WinForm control?
So you have just created a multi-column report and when you preview the report in the ReportViewer control, you only get one column and extra pages. However when you print the report or export the report, the columns are displayed correctly.
This is a “feature” of reporting services and there is not much you can do. Incidentally, the ReportPax label templates do not use the multi columns property so they do not have this issue.
As far as an explanation goes, I’d say it mainly has to do with the fact that the reports are rendered as html when using the ReportViewer control. Emulating static widths and heights for printing in html would be difficult, so I guess they didn’t bother. Reporting Services documentation calls the ReportViewer control a “soft page-break renderer”.
Hidden in the documentation, it actually states that muli-column reports are not supported using the ReportViewer control, unless printing or exporting to PDF (at least that is my interpretation and backed up by its behavior):
“Columns are only applied when you render and print reports in PDF or Image formats.”
What is the RSClientPrint Control in VS2008?
It’s just a fancy name for the Print Icon. In VS2005, the Print icon would only be available for reports running from a Reporting Services server.
Adding this print icon was a nice enhancement and I think the best Reporting improvement they could of added. Why it took so long is another story. However now that it’s there, it makes Web Reporting affordable. Since it comes with Visual Studio, you don’t have to buy a third party reporting package or make a huge investment in a Reporting Services server.
The one limitation is that the Print icon only works in Internet Explorer (since it is an ActiveX Control). You will probably have to wait until VS20XX for the SilverLight version.
You can check out the Print Icon in action on the demo site.
Converting VS2005 ReportViewer Reports to VS2008
There is no conversion necessary to use reports in Visual Studio 2008 that you created in Visual Studio 2005.
You might run into a few issues when opening a web page or form that has a reference to the 2005 ReportViewer control. For example, when I converted a VS2005 report project to VS2008 using the conversion wizard, it didn’t upgrade a web page that was referencing the previous version of the ReportViewer control. When you try and open this page in the designer, you get an error. The simple fix that I used was to view the source and manually change the version number from 220.127.116.11 to 18.104.22.168:
<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=22.214.171.124, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>
If you have issues with Windows Forms, it would be easier to remove the old ReportViewer control from the designer and add a new one from the toolbox.
How do I bind a report to a datasource during runtime in code.
Assuming you have already designed the report and have defined a data source (you can use the report wizard if not), it’s just a matter of setting this datasource in the code.
For example, in the PageLoad of an .aspx page that has a reportviewer control on it (pointed to your report):
Here are some additional references:
Report Control Reference: http://msdn.microsoft.com/en-us/library/aa983493(VS.80).aspx