I have a report formatted to print on a 8-1/2x11 sheet up labels. But need some of the labels to print more than once.
I made a BAQ Report that allows our Shipper to enter an order number and select which line items to print labels for. Some of the lines need multiple copies of the label.
Take the following order as an example:
ignore multiple labels for a moment, the BAQ prints as a single report, with 4 labels (one for each line in the SO)
Selecting 5 copies during printing would give that many of every label (a total of 20). I want to end up with (12) labels. Basically, print row 1 (5x), row 2 (5x), row 3 (1x) and row 4 (1x).
Currently they run the report for each line that requires multiple copies independently, using the Print dialog’s “Number of Copies”
My BAQ doesn’t change, but rather a new dataset is created at SSRS runtime, with extra rows created by the Union of the original DS with itself, using the created ID field as the counter.
I don’t know if it’s relevant since I don’t use SSRS, but I do the exact thing you are describing using custom code, bartender and a customization (that’s fired by a BPM)
The SSRS parameter-based approach that Jose proposed is solid, but if I were to recommend a pseudo-“way the system was designed” logic approach, I would tie to a method running server side code, for instance BO.Update in your updatable dashboard.
foreach row in your dataset, you want to make a BO connection to the report service contract, use the .GetNewParameters() method, then in the parameters, modify the RptPrinterSettings column to include “Copies=” + variable from your dataset. I actually use this method to conditionally auto-print a number of pages, reports, report styles, etc. from the customers or contents of the pack during shipment.
Edit: I forgot to mention that this ends with the service.SubmitToAgent() call which will put the print in the immediate run queue to the specified network printer. If you need more information on what the parameters look like, check out the SysTaskParams table. This does take a good amount of customization background.
Wouldn’t setting the number of copies make that many for every record in the print job’s dataset?
Because we use multiple labels on a single 8-1/2x11 sheet, I need it to be one print job, but with certain records (i.e. individual labels) printed multiple times.
Ah, I get it. My suggestion would result in the labels being printed on separate page using separate jobs.
You’ll probably want to keep your updatable dashboard and in SSRS script do something like creating a count variable and repeating the group while the count variable is less than the field data, then resetting to zero before going to the next group. You could probably do this with subreport within a group with the parameter passing in as the field value. If your in-house skill is on the SSRS side, then this is definitely the way to go.
I know this thread is aged a bit, but I’m trying to get something similar accomplished.
Does anyone have a working example of the modified SSRS dataset that I can look over?
To achieve this… do you need the subreport that is described in the above link… or does modifying just the the dataset in your original SSRS achieve the repeated rows?
There was a developer at our company before me that created a UD table with 100 rows. In each row’s number01 field, there was an incremented value starting with 1. So you end up with 100 rows numbered 1 through 100. They then added that UD table in the RDD or BAQ if it was a BAQ report by joining it to the desired table on DesiredTable.Company = UDTable.Company and UDTable.Number01 <= @NumberOfCopies… which could be passed via a BAQ report option or just statically set, or as Calvin mentioned above, you could use a value from another table.
In the report they just added it to the data set and then added a parent group on the UDTable.Number01 field and set a page break inbetween each instance of a group.
Not sure how practical it is or efficient, but it was an interesting way to make it work.
Thank you Calvin and Utah… We were able to achieve our the desired results using a UD number reference table in our Test database. Appreciate the guidance. I’ll still keep hacking at the other method where we pass one record to the rdl and parse it our from there.