powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / report form
8 сообщений из 8, страница 1 из 1
report form
    #36956243
ENDOFUSSR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Заблудился в трех соснах. Хочу распечатать два отчета на одном листе.
Использую команды

REPORT FORM PRINAT TO PRINTER NOPAGEEJECT
REPORT FORM PRINAT TO PRINTER

но печатается на двух листах.
Что тут не так?
...
Рейтинг: 0 / 0
report form
    #36956332
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FoxPro не может распечатать два отчета на одном листе. Никак. В принципе.

Как Вы себе представляете работу лазерного принтера в этом случае? Распечатал половину листа, остановился подумать, потом начал печатать вторую половину?

Единственное решение - создавать новый отчет на основании двух предыдущих. Новый файл frx

Смысл NOPAGEEJECT не в том, чтобы подавить прогон листа, а в том, чтобы включить очередной отчет в то же самое задание принтера (print job). Т.е. в очереди на печать будет не 2 задания (по одному на каждый отчет), а одно общее. Но прогон листа по окончании первого frx все-равно будет происходить.

PS: Если не ошибаюсь, то NOPAGEEJECT действительно подавлял прогон листа, но только в версии Fox2x и только при печати на матричных принтерах. Т.е. в версии VFP он изменил свой смысл.
...
Рейтинг: 0 / 0
report form
    #36956360
ENDOFUSSR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тут кажется все просто. На листе А4 надо напечатать два экземпляра одного и того же отчета.
Потом юзер разорвет лист пополам, половину себе, а половину другу. Отчеты мелкие, заголовочная часть 5 строк, и пара строк из таблицы.
...
Рейтинг: 0 / 0
report form
    #36956580
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENDOFUSSRТут кажется все просто. На листе А4 надо напечатать два экземпляра одного и того же отчета.
Потом юзер разорвет лист пополам, половину себе, а половину другу. Отчеты мелкие, заголовочная часть 5 строк, и пара строк из таблицы.Нормального решения на фоксовом репорт-движке, похоже, нет. Тоже встала как-то такая задача, так вот если высота экземпляра отчёта неизвестна заранее, то это дохлый номер. Ацкими извратами можно приблизительно спозиционировать второй кусок туда, куда надо, но всё равно строго с середины листа не получится.
Спецы, если я неправ, то расскажите, пожалуйста, решение. Мне всё ещё интересно.
...
Рейтинг: 0 / 0
report form
    #36956694
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выводите в Эксель в готовый шаблон А4, разбитый на 2 части.
...
Рейтинг: 0 / 0
report form
    #36956723
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENDOFUSSRТут кажется все просто. На листе А4 надо напечатать два экземпляра одного и того же отчета. Потом юзер разорвет лист пополам, половину себе, а половину другу. Отчеты мелкие, заголовочная часть 5 строк, и пара строк из таблицы.
Эта задача решается по другому.

Отчет - это всегда сканирование записей одной (главной) таблицы. Поскольку весь отчет помещается на половинке листа, то, скорее всего, источником является одна запись. Так вот, надо создать курсор, в котором просто создать две совершенно одинаковые записи. И указать этот курсор как источник данных для отчета.

Разумеется, в этом случае нельзя использовать полосы отчета Title/Summary или Page Header/Page Footer. Если надо создать больше одной полосы отчета, то добавляется группировка по Recno() и используется Group Header/Group Footer

Если в отчете отображется больше одной записи, то в курсоре следует создать специальное поле, вроде "Номер группы", соответственно, группировку делать по этому полю.
...
Рейтинг: 0 / 0
report form
    #36956773
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМнадо создать курсор, в котором просто создать две совершенно одинаковые записи. И указать этот курсор как источник данных для отчета.Это, конечно, хорошо, но как быть, если у меня не по одной записи, а группы записей заранее неопределённого размера (единственное, что каждая группа точно умещается в "полстранице")?
...
Рейтинг: 0 / 0
report form
    #36957006
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirВладимирМнадо создать курсор, в котором просто создать две совершенно одинаковые записи. И указать этот курсор как источник данных для отчета.Это, конечно, хорошо, но как быть, если у меня не по одной записи, а группы записей заранее неопределённого размера (единственное, что каждая группа точно умещается в "полстранице")?
Если нет объектов со свойством "Stretch with overflow", то проблема решаема именно "в общем случае". Как уже упоминалось, путем введения дополнительных полей с признаком группы и порядковым номером записи.

Для "компенсации" "высоты" в случае использования объектов с условием печати "Remove if blank" просто создаются дополнительные пустые записи. В конце "половинки".

Со свойством "Stretch with overflow" задача "в общем случае", ну, тоже, в приницпе, решаема. Но довольно сложными способами, путем многократных предварительных прогонов "в никуда". "Прогнали", добавили пустую запись, снова "прогнали", если надо добавили еще пустую запись и т.д. пока не выйдем на нужное место листа. После чего копируем записи для второй половинки.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / report form
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]