Solved

Reporting Services (mailing labels) how to get physical page break on group change instead of column break?

Posted on 2011-03-08
4
1,422 Views
Last Modified: 2012-05-11
I'm generating labels (Avery 5160 : 3 across, 10 down) for a school. Grouping of students is by grade. Each new grade must start printing on a new sheet of labels. We must not start printing a grade's group on the next available column of labels on a partially used sheet. The reason we cannot have more than one grade group on a physical sheet of labels is that the sheets are taken off of the printer and handed directly to the grade's teacher. No one will cut the sheet coming out of the printer to separate grades.

When I put a page break between grade groups the next grade prints on the next available column of the label sheet. How can I force extra breaks to get the next grade to print on the next label sheet in the printer? I understand that Reporting Services treats each column in a multi-column report as a page--so it would be the equivalent of forcing extra page breaks (an extra one or two page breaks depending in which column the last data item for the prior group printed).
Attached are the .rdl file and dataset, and a Word document showing an image of what is rendered vs the desired rendering. I've added a ".xml" extension to allow these files to upload to this site. Whem importing into Reporting Services make sure you remove the ".xml" extension so you have valid file names "MultiColumnPageBreakOnGroup.rdl" and "MultiColumnPageBreakOnGroup.rd
MultiColumnPageBreakOnGroup.doc
MultiColumnPageBreakOnGroup.rdl..xml
MultiColumnPageBreakOnGroup.rdl.xml
0
Comment
Question by:RippleBirder
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
4 Comments
 

Author Comment

by:RippleBirder
ID: 35111595
Looks like I have solved my own question. I added a column to the dataset which returns the number of page breaks (columns) that have to be forced in order for the next group to print on the next physical sheet of paper.

Then I set up an "adjacent group" after the detail section to add a page break if a one or two column shift need to be forced. If no additional page break is needed (due to a break in the actual group) the adjacent group is hidden and therefore, does not break.

A second "adjacent group" after the detail section is required if a two column shift is to be forced. This is hidden to prevent a page break if only one or no additional page breaks are needed.

I'll clean up my solution and post it for others.
0
 

Accepted Solution

by:
RippleBirder earned 0 total points
ID: 35129106
Here is the solution I've arrived at.

Included is a sample dataset and comments embedded to show how I've identified how many additional column(page) breaks are required to print on a new sheet of labels. I'm using a labels sheet of 9 down and 3 across for this particular solution (Width 2.5935in; Height 1.0in). Use appropriate column/row values for other label sheet configurations.

The .rdl file that uses this dataset is attached.


Sample dataset:
select 'North Elementary' as school, 'Grade 1' as class, 'Student1' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
into #temp_my_table
union
select 'North Elementary' as school, 'Grade 1' as class, 'Student2' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 1' as class, 'Student3' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 1' as class, 'Student4' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 1' as class, 'Student5' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 1' as class, 'Student6' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union 
select 'North Elementary' as school, 'Grade 2' as class, 'Student7' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student8' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student9' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student10' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student11' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student12' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student16' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student17' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student18' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student19' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student20' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student21' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student22' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student23' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student24' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student25' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student26' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student27' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student28' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student29' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student30' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student31' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student32' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student33' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student34' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student35' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student36' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student37' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student38' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student39' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student40' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student41' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student42' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student43' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student44' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student45' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student46' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student47' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student48' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student49' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student50' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student51' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student52' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student53' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 2' as class, 'Student54' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 3' as class, 'Student55' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 3' as class, 'Student56' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 4' as class, 'Student57' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed
union
select 'North Elementary' as school, 'Grade 4' as class, 'Student58' as student, ' ' as one_extra_page_break_needed, ' ' as two_extra_page_breaks_needed

/* figure out which column data goes in 1:2:3 */
select (row_number() over (partition by class order by school, class) -1) as groupnum, 
school, class, student, one_extra_page_break_needed, two_extra_page_breaks_needed
into #temp_my_table_w_seq
from #temp_my_table

/* figure out which column data is written to */
/* These labels have 9 rows and 3 columns per page so using the ceiling and % operators */
/* you end up with first column = 0, second column = 1, third column = 2 */
SELECT  groupnum as row, ceiling(groupnum/9) % 3 as last_data_column, 
school, class, student, one_extra_page_break_needed, two_extra_page_breaks_needed
into #temp_numbered_table
FROM #temp_my_table_w_seq

/* find out which column the last data row will be written to */
/* for that particular group--in this case class */
/* you end up with first column = 0, second column = 1, third column = 2 */
select last_data_column as last_column, school, class
into #temp_max_col
from #temp_numbered_table t
where t.row = (select max(row) from #temp_numbered_table t2
where t.school = t2.school
and t.class = t2.class)

/* Data rows end in first column of the sheet. Two additional */
/* page breaks needed to start new sheet */
update t
set 
two_extra_page_breaks_needed = 'Y',
one_extra_page_break_needed = 'Y'
from #temp_numbered_table t
join #temp_max_col c on
t.school = c.school
and t.class = c.class
and last_column = '0'

/* Data rows end in second column of the sheet. One additional */
/* page break needed to start new sheet */
update t
set one_extra_page_break_needed = 'Y'
from #temp_numbered_table t
join #temp_max_col c on
t.school = c.school
and t.class = c.class
and last_column = '1'

/* Data rows end in third column of the sheet. No additional page break needed to start new sheet. */
/* The break on group accomplishes this */

/* Get result data for the report */
select * from #temp_numbered_table

Open in new window

MultiColumnPageBreakOnGroup.rdl.xml
0

Featured Post

Want Experts Exchange at your fingertips?

With Experts Exchange’s latest app release, you can now experience our most recent features, updates, and the same community interface while on-the-go. Download our latest app release at the Android or Apple stores today!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

From implementing a password expiration date, to datatype conversions and file export options, these are some useful settings I've found in Jasper Server.
Ever wondered why sometimes your SQL Server is slow or unresponsive with connections spiking up but by the time you go in, all is well? The following article will show you how to install and configure a SQL job that will send you email alerts includ…
Via a live example, show how to backup a database, simulate a failure backup the tail of the database transaction log and perform the restore.
Viewers will learn how to use the SELECT statement in SQL and will be exposed to the many uses the SELECT statement has.

636 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question