1. Michael Klein
  2. Report Editor
  3. Понедельник, Август 24 2020, 09:35 PM
  4.  Подписаться через email
I have a report that prints a set of labels. (I'm using a report instead of labels because of this issue.) My labels come in sheets of 3 labels across by 5 down. My report is configured using Column Layout: Right.

I'd like to be able to print partial pages, and then print the rest another time by skipping the first N labels on a page. For example, if I print a sheet of 5 labels, the next time I print, I'd run the same sheet through again and tell the report to skip the first 5 positions (so it would start on row 2 column 3).

Is there a way to do this either at printing time, or by altering my query and adding conditional printing to my page elements in the report to leave the first N positions blank?
Комментарий
There are no comments made yet.
Sergey Pashkov Ответ принят
Hello Michael,

Yes, you can skip first records.

1. Add a new parameter to the Parameters tab at the left (e.g. start_record, type Integer, Default 5)
2. Select printed controls and change print_if property:
report.cursor.position >= $P('start_record')


An invisible rectangle will keep an empty space
Вложения
Комментарий
There are no comments made yet.
Michael Klein Ответ принят
This looks like a good start as far as keeping empty space, but I don't want to actually skip those records. I have a field called printed that I use to keep track of labels that have already been printed, and the query excludes those. So I want to print all the records in the query, but I want to skip skip_number of label spaces. Can I do that, or do I have to somehow include skip_number records at the beginning of my cursor as well?
Комментарий
There are no comments made yet.
Michael Klein Ответ принят
I've overcome the hurdle in the last question by creating a blank_rows table with 14 numbered rows, and edited my query:


SELECT row_num AS name, row_num AS description, 0 AS serial_number
FROM blank_rows
WHERE row_num < $P(start_record)
UNION ALL
SELECT name, description, serial_number
FROM real_data
ORDER BY serial_number;


Now I have the right number of dummy records at the top of my data source to match the number of blank spaces I need, and things are almost working right. The problem now is:


  • if start_record is 1 through 3, printing starts in the correct position in row 1
  • if start_record is 4 through 6, printing starts in the correct position in row 2
  • if start_record is greater than 6, printing starts in the correct column, but still in row 2


In other words, it will only ever skip 1 row worth of labels.

I've tried putting 1, 2, 3, and 4-row high rectangles in the header and setting them to print conditionally if start_record > 3, 6,
9, and 12, respectively. That almost works also, but that results in the labels in columns 2 and 3 of the last row getting pushed to
the next page for some reason.
Комментарий
There are no comments made yet.
Michael Klein Ответ принят
Please disregard my previous message. I accidentally set my blank rectangle to print conditionally based on start_num and it was causing the failure to shift down. I think everything is working now the way I want it. Thank you!
Комментарий
There are no comments made yet.
  • Страница :
  • 1


There are no replies made for this post yet.
However, you are not allowed to reply to this post.