Discussions
Categories
Groups
Community Home
Categories
INTERNAL ENABLEMENT
POPULAR
PUBLIC CLOUD
PRIVATE CLOUD
Quick Links
MY LINKS
HELPFUL TIPS
Back to website
Home
Intelligence (Analytics)
pdf pagination - multiple columns
Birt_Ben_S
Hi all,
Does anyone know how to solve this problem?
I have a query that retrieves about 1000 student names. I want to print the names in pdf format. Each page shows 3 columns with their row counts (so basically 6 columns). By looking at Jason Whethersby and Michael W.'s replies, I know how to use row count. Now I want to print these names in several pdf pages as follows.
Page 1:
Column 1: Name 1-30
Column 2: Name 31-60
Column 3: Name 61-90
Page 2:
Column 1: Name 91-120
Column 2: Name 121-150
Column 3: Name 151-180
....
Can anyone please tell how to do this?
Thanks,
Ben
Find more posts tagged with
Comments
mwilliams
Hi Ben,
Have you tried setting the page break interval to 30 in the page break section of the property editor. This is my initial idea, but I have not tested it to see if it works for parallel type reports like this.
Birt_Ben_S
Hi Michael,
Thanks for reply. Using your suggestion and by modifying some master page properties, I can display 30 rows per page. However, can you please tell how I could create a filter to display only the names in each column? e.g.,
Column 1 of Page 1: Names 1-30
Column 1 of Page 2: Names 91-120
Column 1 of Page 3: Names 181-210
...
Thanks,
Ben
mwilliams
Ben,
You should be able to just remove the "row" column. Your filters you created to get the 3 columns use the row count, but you shouldn't need to display them. If I'm not understanding your setup correctly, please attach your report design so I can see how you've set it up. Also let me know your BIRT version. Thanks.
Birt_Ben_S
Michael,
The filter is to limit the names being displayed on a particular column only to certain rows. It does not have to do with the Row count. The Grid has 3 tables with the same data sets. Without a filter, the 3 tables will display exactly the same rows. To display continuously as follows, the filter come to play. Thanks, Ben
Page 1:
<table border=1>
<tr><td>Row</td><td>Name</td>
<td>Row</td><td>Name</td>
<td>Row</td><td>Name</td>
</tr>
<tr><td>1</td><td>Ben1</td>
<td>31</td><td>Ben31</td>
<td>61</td><td>Ben61</td>
</tr>
<tr><td>2</td><td>Ben2</td>
<td>32</td><td>Ben32</td>
<td>62</td><td>Ben62</td>
</tr>
<tr><td>3</td><td>Ben3</td>
<td>33</td><td>Ben33</td>
<td>63</td><td>Ben63</td>
</tr>
<tr><td colspan=6>...</td></tr>
<tr><td>30</td><td>Ben30</td>
<td>60</td><td>Ben60</td>
<td>90</td><td>Ben90</td>
</tr>
</table>
Page 2:
<table border=1>
<tr><td>Row</td><td>Name</td>
<td>Row</td><td>Name</td>
<td>Row</td><td>Name</td>
</tr>
<tr><td>91</td><td>Ben91</td>
<td>121</td><td>Ben121</td>
<td>151</td><td>Ben151</td>
</tr>
<tr><td>92</td><td>Ben92</td>
<td>122</td><td>Ben122</td>
<td>152</td><td>Ben152</td>
</tr>
<tr><td>93</td><td>Ben93</td>
<td>123</td><td>Ben123</td>
<td>153</td><td>Ben153</td>
</tr>
<tr><td colspan=6>...</td></tr>
<tr><td>120</td><td>Ben120</td>
<td>150</td><td>Ben150</td>
<td>180</td><td>Ben180</td>
</tr>
</table>
Page 3:
<table border=1>
<tr><td>Row</td><td>Name</td>
<td>Row</td><td>Name</td>
<td>Row</td><td>Name</td>
</tr>
<tr><td>181</td><td>Ben181</td>
<td>211</td><td>Ben211</td>
<td>241</td><td>Ben241</td>
</tr>
<tr><td>182</td><td>Ben182</td>
<td>212</td><td>Ben212</td>
<td>242</td><td>Ben242</td>
</tr>
<tr><td>183</td><td>Ben183</td>
<td>213</td><td>Ben213</td>
<td>243</td><td>Ben243</td>
</tr>
<tr><td colspan=6>...</td></tr>
<tr><td>210</td><td>Ben210</td>
<td>240</td><td>Ben240</td>
<td>270</td><td>Ben270</td>
</tr>
</table>
Birt_Ben_S
The above three tables looks like this.
Page 1:
Row Name Row Name Row Name
1 Ben1 31 Ben31 61 Ben61
2 Ben2 32 Ben32 62 Ben62
3 Ben3 33 Ben33 63 Ben63
...
30 Ben30 60 Ben60 90 Ben90
Page 2:
Row Name Row Name Row Name
91 Ben91 121 Ben121 151 Ben151
92 Ben92 122 Ben122 152 Ben152
93 Ben93 123 Ben123 153 Ben153
...
120 Ben120 150 Ben150 180 Ben180
Page 3:
Row Name Row Name Row Name
181 Ben181 211 Ben211 241 Ben241
182 Ben182 212 Ben212 242 Ben242
183 Ben183 213 Ben213 243 Ben243
...
210 Ben210 240 Ben240 270 Ben270
mwilliams
Ben,
I know what the filters are for
. The way I read your previous post about having 6 columns was that you had the filters working for the columns, but you wanted to get rid of the "row" column. So, I guess I'm not understanding what you're looking for. Do you have the columns set up correctly, but just are unable to figure out the filter to get unique names in each column? If so, you can use something like 'RowNumber%3 = 1', 'RowNumber%3 = 2', and 'RowNumber%3 = 0' as the filters for the 3 tables to get unique names in each column. Let me know if this is not your issue.
Birt_Ben_S
Michael,
Thanks for reply.
I'm sorry for not explaining my problem clearly. I understand the operator "%." But that is not what I need.
What I want to have is a filter for the first column (actually the table) that can filter out RowNumbers 31-90, 121-180 and 211-270, and just display RowNumbers 1-30, 91-120 and 181-210.
Can you please help?
______________________
Regards,
Ben
mwilliams
Ben,
So, you want to only receive one page of names with those specific row numbers and don't care about the other names? Or would you like something more dynamic that would allow you to pick which row numbers you see?
Birt_Ben_S
Michael,
I want to display all 1000 names, 90 names per page. On each page, the 90 names are displayed in 3 columns alphabetically with the first 30 names in the 1st column, second 30 2nd column, and third 30 3rd column.
On each page, the first row/name in the second column is the one ( alphabetically in the dictionary) next to the last name in the first column.
On the next page, the first row/name of the first column will be the one ( alphabetically in the dictionary) next to the last name in the 3rd column of the previous page.
I have attachment to show this (page3.jpg). Please help.
Thanks,
Ben
Birt_Ben_S
attachment
Birt_Ben_S
attachment 2
mwilliams
Ben,
A simple, non dynamic solution would be using filters like the following:
Table1: (row["Row Number"] <= 30) || (row["Row Number"] > 90 && row["Row Number"] <= 120) || ..... Is True
Table2: (row["Row Number"] > 30 && row["Row Number"] <= 60) || (row["Row Number"] > 120 && row["Row Number"] <= 150) || ..... Is True
-AND-
Table3: (row["Row Number"] > 60 && row["Row Number"] <= 90) || ..... Is True
Adding criteria to each until you know you'll definitely cover all the names and setting your page break to 30 rows. This won't work if you go over your estimated amount of names as it is not dynamic. Hope this helps.