:: Visual Foxpro, Foxpro for DOS
Печать двух отчетов на двустороннем принтере
Sega
Автор

Сообщений: 511
Откуда: Ярославль
Дата регистрации: 27.12.2000
Есть двухсторонний печатный бланк и обычный (односторонний) принтер HP1132. В своей программе я использовал следующую конструкцию для печати на обеих сторонах листа:

REPORT FORM Page1 TO PRINTER PROMPT PREVIEW
MESSAGEBOX("Переверните лист для печати обратной стороны и нажмите на 'ОК'", 48+1, "Печать")
REPORT FORM Page2 TO PRINTER PROMPT PREVIEW

Купили и подключили принтер с двухсторонней печатью и теперь задание на печать ИНОГДА отправляют на него. Естественно задаются вопросом, зачем переворачивать лист, если принтер умеет это делать.

Вопрос в том, можно ли без переделки отчетов Page1 и Page2 распечатать оба отчета как одно задание? Понятно, что MESSAGEBOX я отключить могу.

Либо совсем уйти в другую сторону: объединить отчеты Page1 и Page2 в Page0. Но как в этом случае вывести предложение перевернуть лист, если печатается на одностороннем принтере?
Ratings: 0 negative/0 positive
Re: Печать двух отчетов на двустороннем принтере
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Можно узнать свойства принтера:
PRTINFO(nPrinterSetting [, cPrinterName])

10 PRT_DUPLEX Состояние режима Duplex

А там уже обьединять или не обьединять отчеты стр1 и стр2. Выброс бумаги надо/ненадо делать в разных режимах принтера...



Исправлено 1 раз(а). Последнее : of63, 21.01.20 16:28
Ratings: 0 negative/0 positive
Re: Печать двух отчетов на двустороннем принтере
Sega
Автор

Сообщений: 511
Откуда: Ярославль
Дата регистрации: 27.12.2000
of63
Можно узнать свойства принтера:
PRTINFO(nPrinterSetting [, cPrinterName])

10 PRT_DUPLEX Состояние режима Duplex

А там уже обьединять или не обьединять отчеты стр1 и стр2. Выброс бумаги надо/ненадо делать в разных режимах принтера...

Тут не всё тоже просто. По умолчанию в Винде стоит принтер с двусторонней печатью HP1606dn и настройках печати на обеих страницах, но
PRTINFO(10) у меня всегда возвращает 1 - Печать Simplex

Да и вопрос не в этом. Как печать двух страниц в разных отчетах объединить в одно задание?
Ratings: 0 negative/0 positive
Re: Печать двух отчетов на двустороннем принтере
sphinx

Сообщений: 31166
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Было обсуждение на sql.ru: www.sql.ru.

Для объединения двух отчетов в одно задание есть здесь:

Цитата:
Следующий пример показывает, как выполнить пакетное задание по выводу на печать отчетов, сотоящее из двух отчетов. Visual FoxPro выполняет двойной проход отчетов, чтобы получить полное число страниц, которое сохраняется в системной переменной _PAGETOTAL для того, чтобы позволить применить выражение "Page X of Y" в оформлении отчета.
Обратите внимание:
Вы можете гарантировать, что проход отчета выполняется дважды включением _PAGETOTAL в выражениях вашего отчета. Если Вы не нуждаетесь в _PAGETOTAL, но хотели бы, чтобы для других вычислений осуществлялось два прохода, можете использовать режим вывода object-assisted и устанавливать свойство ReportListener TwoPassProcess в .T. . Для подробной информации, см. TwoPassProcess Свойство .
NORESET определяет, что печать номеров страниц переносится на следующий отчет. NOPAGEEJECT определяет, что первая страница второго отчета продолжает печататься на обратной стороне последней страницы первого отчета.

Скопировать код
REPORT FORM myReport1.frx TO PRINTER NOPAGEEJECT
REPORT FORM myReport2.frx TO PRINTER NORESET
MESSAGEBOX("You printed " + ;
TRANSFORM(_PAGETOTAL)+" pages.")Следующий пример показывает, как выполнить пакетное задание по выводу на печать отчетов, сотоящее из двух отчетов. Visual FoxPro выполняет двойной проход отчетов, чтобы получить полное число страниц, которое сохраняется в системной переменной _PAGETOTAL для того, чтобы позволить применить выражение "Page X of Y" в оформлении отчета.

Обратите внимание:
Вы можете гарантировать, что проход отчета выполняется дважды включением _PAGETOTAL в выражениях вашего отчета. Если Вы не нуждаетесь в _PAGETOTAL, но хотели бы, чтобы для других вычислений осуществлялось два прохода, можете использовать режим вывода object-assisted и устанавливать свойство ReportListener TwoPassProcess в .T. . Для подробной информации, см. TwoPassProcess Свойство .
NORESET определяет, что печать номеров страниц переносится на следующий отчет. NOPAGEEJECT определяет, что первая страница второго отчета продолжает печататься на обратной стороне последней страницы первого отчета.

Скопировать код
REPORT FORM myReport1.frx TO PRINTER NOPAGEEJECT
REPORT FORM myReport2.frx TO PRINTER NORESET
MESSAGEBOX("You printed " + ;
TRANSFORM(_PAGETOTAL)+" pages.")


------------------
"Veni, vidi, vici!"(с)




Исправлено 1 раз(а). Последнее : sphinx, 21.01.20 16:56
Ratings: 0 negative/0 positive
Re: Печать двух отчетов на двустороннем принтере
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Фоксовые репорты можно обьединить PRINTJOB, но я обьединяю этим только чтобы несколько копий печатать, а в остальном (обьединение страниц) - NOEJECT-ами, последовательно посылаю на принтер репорты (без превью) с EJECT или с NOEJECT...
Ratings: 0 negative/0 positive
Re: Печать двух отчетов на двустороннем принтере
fvi

Сообщений: 37
Откуда: Novosibirsk
Дата регистрации: 07.02.2005
Проблема осталась? - могу рассказать как я вышел из ситуации
Ratings: 0 negative/0 positive
Re: Печать двух отчетов на двустороннем принтере
Sega
Автор

Сообщений: 511
Откуда: Ярославль
Дата регистрации: 27.12.2000
Нет, проблема не решилась. Пока перед печатью наглядно в форме показываю при помощи SET("Printer",3) текущий принтер. В этом случае бухгалтер выбирает для печати нужный.
С большим любопытством хотел бы узнать как вы это сделали.
Ratings: 0 negative/0 positive
Re: Печать двух отчетов на двустороннем принтере
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
() Вроде схема печати простая (не учитывает ошибки):
имя = GETPRINTER() && если в ОС нет ни одного принтера, то здесь будет ошибка 125 "Принтер не готов"
SET PRINTER TO NAME (имя) && не обязательно, это чтобы не упоминать имя принтера
вид = PRTINFO(10, имя) && настройка Duplex: 1/2/3 - Simplex/VertDuplex/GorizDuplex ...пока это все что нас интересует...
IF вид=1 && Simlex
REPORT FORM Page1 TO PRINTER
MESSAGEBOX("Переверните лист для печати обратной стороны и нажмите на 'ОК'", 48+1, "Печать")
REPORT FORM Page2 TO PRINTER
ELSE && Duplex
REPORT FORM Page1 TO PRINTER NOPAGEEJECT
REPORT FORM Page2 TO PRINTER
ENDIF
Какое место работает не так?
Ratings: 0 negative/0 positive
Re: Печать двух отчетов на двустороннем принтере
fvi

Сообщений: 37
Откуда: Novosibirsk
Дата регистрации: 07.02.2005
компоную отчет так - redaktor - title/summary - галочка title band- полосу сдвигаю в конец листа - помещаю первый лист отчета над полосой - под ней второй лист отчета- сохраняю- перед печатью - SET PRINTER TO NAME на двусторонний принтер, если он не по умолчанию - нюансы(они есть) можно по телефону 8 913 729 78 86
Ratings: 0 negative/0 positive
Re: Печать двух отчетов на двустороннем принтере
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Че там, по телефону, нас ожидает?
Ratings: 0 negative/0 positive
Re: Печать двух отчетов на двустороннем принтере
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005




Исправлено 1 раз(а). Последнее : Ydin, 06.02.20 10:03
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 27 (Гостей: 27)

© 2000-2024 Fox Club 
Яндекс.Метрика