# Report Table repeating on every page

**URL:** <https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594>\
**Category:** Ignition\
**Tags:** reporting\
**Created:** [February 29, 2024, 11:14am UTC](https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594 "2024-02-29T11:14:29Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Vatsal\_Shah](https://avatars.discourse-cdn.com/v4/letter/v/0ea827/32.png) [@Vatsal\_Shah](https://forum.inductiveautomation.com/u/Vatsal_Shah)\
**Post date:** [February 29, 2024, 11:14am UTC](https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594/1 "2024-02-29T11:14:29Z")

</div>

Hi,  
I have two tables in my report. Table A and Table B.

If anyone one of the table is not getting accumulated on current page then it will continue with the next page. But when anyone table gets on the second page, The table which was finished at page 1 also gets repeated on every page .  
If the table is finished on a page I do not want it to be get repeated on next page. That space should remail blank  
Pls let me know what to do

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/7/e/7e8f7eefb59a90b4d5a8dd477364eb74426f63ea.png)  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/8/9/898df60468ca3b208699e84b5b74f09aa4d63988.png)  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/5/e/5e9bbc255c807bff46e741d625731fea3678f610.png)

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [February 29, 2024, 1:27pm UTC](https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594/2 "2024-02-29T13:27:13Z")

</div>

You have to put both tables in a table group. The table group will then span the pages as you wish.

---

<div class="post-metadata">

**Author:** ![Vatsal\_Shah](https://avatars.discourse-cdn.com/v4/letter/v/0ea827/32.png) [@Vatsal\_Shah](https://forum.inductiveautomation.com/u/Vatsal_Shah)\
**Post date:** [February 29, 2024, 1:32pm UTC](https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594/3 "2024-02-29T13:32:25Z")

</div>

I have to do something like : two tables side by side and the third table just below both of this two tables.

like first the above two tables should be polulated completely only then the thrid table below should start.  
I kno to use Table group (Peer) for the third table to get popilated just after the above table finishes but was stuck why the table which is completely polulated on the page 1 is getting repeated on the next pages

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [February 29, 2024, 1:33pm UTC](https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594/4 "2024-02-29T13:33:52Z")

</div>

> [@Vatsal\_Shah](#):
>
> two tables side by side

Huh. Never had to do that. Not sure it can be done while also spanning pages. 🤷‍♂️

---

<div class="post-metadata">

**Author:** ![Vatsal\_Shah](https://avatars.discourse-cdn.com/v4/letter/v/0ea827/32.png) [@Vatsal\_Shah](https://forum.inductiveautomation.com/u/Vatsal_Shah)\
**Post date:** [February 29, 2024, 1:38pm UTC](https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594/5 "2024-02-29T13:38:02Z")

</div>

The thing is I have to print out the whole page visibile in the browser.  
I tried using component event - RequestPrint. But that thing is only printing the things which are currently visible on the screen and not printing the whole page.  
Even tried playing with the "Page","View" and "component" optings which are available for the Request print event

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [February 29, 2024, 2:11pm UTC](https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594/6 "2024-02-29T14:11:25Z")

</div>

> [@Vatsal\_Shah](#):
>
> RequestPrint

That is totally unrelated to Reporting.

Please explain what you **really** need to do.

---

<div class="post-metadata">

**Author:** ![Vatsal\_Shah](https://avatars.discourse-cdn.com/v4/letter/v/0ea827/32.png) [@Vatsal\_Shah](https://forum.inductiveautomation.com/u/Vatsal_Shah)\
**Post date:** [February 29, 2024, 4:16pm UTC](https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594/7 "2024-02-29T16:16:24Z")

</div>

Client requirement is that he wants to print all the things as it looks like on the view  
So I Decided to make a report which looks like it which can be downloaded and later printed.

If there’s another way to achieve the outcome pls let me know

---

<div class="post-metadata">

**Author:** ![Vatsal\_Shah](https://avatars.discourse-cdn.com/v4/letter/v/0ea827/32.png) [@Vatsal\_Shah](https://forum.inductiveautomation.com/u/Vatsal_Shah)\
**Post date:** [February 29, 2024, 4:19pm UTC](https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594/8 "2024-02-29T16:19:36Z")

</div>

![IMG_7737](https://us1.discourse-cdn.com/inductiveautomation/original/3X/4/6/46b42dfb8f86e4e245a649764b19833b2e7321f0.jpeg)  
Size of T1 and T2 is not same  
May vary and have different sizes  
T3 should start only after T1 and T2

---

<div class="post-metadata">

**Author:** ![zacht](https://avatars.discourse-cdn.com/v4/letter/z/ea5d25/32.png) [@zacht](https://forum.inductiveautomation.com/u/zacht)\
**Post date:** [February 29, 2024, 4:32pm UTC](https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594/9 "2024-02-29T16:32:06Z")

</div>

Is there a size limit to T1 and T2? Can you guarantee that T1 and T2 will not be longer than 1 page, for example?

---

<div class="post-metadata">

**Author:** ![Vatsal\_Shah](https://avatars.discourse-cdn.com/v4/letter/v/0ea827/32.png) [@Vatsal\_Shah](https://forum.inductiveautomation.com/u/Vatsal_Shah)\
**Post date:** [February 29, 2024, 5:23pm UTC](https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594/10 "2024-02-29T17:23:18Z")

</div>

No T1 and T2 size are not fixed.  
In mostly T2 will be larger than T1 and may spill out to second page

---

<div class="post-metadata">

**Author:** ![zacht](https://avatars.discourse-cdn.com/v4/letter/z/ea5d25/32.png) [@zacht](https://forum.inductiveautomation.com/u/zacht)\
**Post date:** [February 29, 2024, 6:41pm UTC](https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594/11 "2024-02-29T18:41:42Z")

</div>

#### Disclaimer

I don't recommend this approach; I haven't tried it, and I'm not even 100% sure it will work. This is just a fun exercise because I got nerd-sniped. Except under extreme duress, I would not do this. I would try to convince my customer to accept a report with a format more aligned with the reporting module's paradigm. Now that you've been warned...

There are two ways that you _maybe_ could do this.

1. More complex but gives you a better control over how table headings display when pages wrap.
2. Less complex, but there will be some wrapping scenarios where you can't control the table headings as nicely.

#### Method 1

Gather your data for `T1` and `T2` from two different sources and use a script data source to combine them into three different tables we'll call `T1-2'`, `T1'`, and `T2'`.

- `T1-2'` would have as many rows as the shorter of `T1` and `T2`. It will have the same number of columns as `T1` + `T2`, and every cell will have a value.
- For additional rows in `T1` or `T2`:
  - Rows are added from `T1` to `T1'` or from `T2` to `T2'`
    - Either `T1'` or `T2'` will have zero rows by definition.

Combine `T1-2'`, `T1'`, `T2'`, and `T3` into one table group. This will control the vertical wrapping.

Other settings/concepts you'll need to tweak to get the formatting right:

- Keychain expressions
  - You'll need to use keychain expressions to get the formatting right if you want borders around your tables (particularly on the bottom of the shorter of `T1` and `T2`).

- Row versions
  - 99% of the time you probably don't want headings at the very beginning of `T1'` or `T2'`.
    - One of these has no data, so you don't need headings
    - The other has data but probably is butted up against `T1-2'` which has its own headings at the top of the page.

  - 1% of the time you're going to get unlucky and `T1-2'` will be exactly one page long, and you'll want the headings on either `T1'` or `T2'`
  - You can probably accommodate both of these cases using some combination of "First Row," "Standard," "Reprint," and "Split Header" rows. This is left as an exercise for the reader...

- Coordination between `T1-2'`, `T1'`, and `T2'`. Both of these will be a pain to setup and an even bigger pain to maintain if changes are eventually made to the report.
  - You will need to carefully align the columns of `T1-2'` with `T1'`, and `T2'`.
  - You will need to make sure the cell values for the columns of `T1-2'` are the same as their respective columns in `T1'` and `T2'`

#### Method 2

Gather your data for `T1` and `T2` from two different sources and use a script data source to combine them into one table, `T1-2'`.

- Like before, `T1-2'` has the same number of columns as `T1` + `T2`.
- This time, however, `T1-2'` will have the same number of rows as the _greater_ of `T1` and `T2`.
- When either `T1` or `T2` has no more remaining rows, the cell values in `T1-2'` for the exhausted table would be NULL.

As before, combine `T1-2'` and `T3` in a table group.

Formatting considerations:

- You can _probably_ use keychain expressions to format the NULL values as blank space. If you can't, this whole method is probably moot. Determining this is left as an exercise for the reader...
- Keychain expressions on cell borders can _probably_ achieve something that resembles two tables side by side.
- I can't think of a way to have headers for `T1` and `T2` reprint on every page where there is data and not reprint when there isn't data. This is the downside of this method. You could prevent heading reprinting altogether which may be acceptable to you.

---

<div class="post-metadata">

**Author:** ![Vatsal\_Shah](https://avatars.discourse-cdn.com/v4/letter/v/0ea827/32.png) [@Vatsal\_Shah](https://forum.inductiveautomation.com/u/Vatsal_Shah)\
**Post date:** [March 5, 2024, 4:45am UTC](https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594/12 "2024-03-05T04:45:08Z")

</div>

Ok will give this a try and let you know the outcome

---

<div class="post-metadata">

**Author:** ![Vatsal\_Shah](https://avatars.discourse-cdn.com/v4/letter/v/0ea827/32.png) [@Vatsal\_Shah](https://forum.inductiveautomation.com/u/Vatsal_Shah)\
**Post date:** [March 8, 2024, 4:55am UTC](https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594/13 "2024-03-08T04:55:27Z")

</div>

It worked.  
Wrote a script to merge both the datasets and formatted the table as per the need.  
Thanks!

---

<div class="post-metadata">

**Author:** ![Italo\_Saavedra](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/italo_saavedra/32/36627_2.png) [@Italo\_Saavedra](https://forum.inductiveautomation.com/u/Italo_Saavedra)\
**Post date:** [January 14, 2025, 1:49pm UTC](https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594/14 "2025-01-14T13:49:01Z")

</div>

Hello Phil, Could I generate pages with a Bar Chart automatically? Because I need to show up to 12 bars in one page, if it's more the others 12 in another page and so on... thanks

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [January 14, 2025, 2:12pm UTC](https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594/15 "2025-01-14T14:12:15Z")

</div>

Yes, but you would have to arrange your queries to deliver a top-level row for every twelve bars.

---

<div class="post-metadata">

**Author:** ![Italo\_Saavedra](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/italo_saavedra/32/36627_2.png) [@Italo\_Saavedra](https://forum.inductiveautomation.com/u/Italo_Saavedra)\
**Post date:** [January 14, 2025, 6:41pm UTC](https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594/16 "2025-01-14T18:41:37Z")

</div>

Phil, but i don't have a table, I have a Bar Chart only... I didn 't understand when you said "arrange my queries"... thanks again

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [January 14, 2025, 6:45pm UTC](https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594/17 "2025-01-14T18:45:20Z")

</div>

Sorry, I assumed you read all of my advice in this topic, including:

> [@Report Table repeating on every page](https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594/2):
>
> You have to put both tables in a table group. The table group will then span the pages as you wish.

You need an outer query that produces one row per chart, and inner queries that actually supply the chart data for each of those outer rows. This is typically organized with a table group, but might be done with unstructured rows in a single table. You need one or the other.

---

<div class="post-metadata">

**Author:** ![Italo\_Saavedra](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/italo_saavedra/32/36627_2.png) [@Italo\_Saavedra](https://forum.inductiveautomation.com/u/Italo_Saavedra)\
**Post date:** [January 17, 2025, 11:31am UTC](https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594/18 "2025-01-17T11:31:23Z")

</div>

Hello Phil, I understood everything. I have been testing your proposal, but I forgot to tell you the data is dynamic.  
The data depends on the date range, if the result of search are 50 data, it must generate 5 pages of 12 data each page plus 2 at the end, if they are 28 data, 3 pages with 12 data each page plus 4 at the end.  
Could I generate pages dynamically?

Thanks again for your help

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [January 17, 2025, 1:14pm UTC](https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594/19 "2025-01-17T13:14:14Z")

</div>

You will likely need to construct your report data with a script data source instead of SQL.

---

<div class="post-metadata">

**Author:** ![Italo\_Saavedra](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/italo_saavedra/32/36627_2.png) [@Italo\_Saavedra](https://forum.inductiveautomation.com/u/Italo_Saavedra)\
**Post date:** [January 17, 2025, 1:46pm UTC](https://forum.inductiveautomation.com/t/report-table-repeating-on-every-page/86594/20 "2025-01-17T13:46:28Z")

</div>

Thanks again Phil, but it seems this is not easy, paging dynamically is not trivial, I don't know if it exists help or examples to do that...  
Searching...
