Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Reprt Form / 9 сообщений из 9, страница 1 из 1
27.01.2010, 22:21
    #36434807
ЛюдмилаМ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Reprt Form
FoxPro 9 SP1. Немогу разобраться - при распечатки отчета который занимает более 1 листа.
Хотела чтобы принтер, распечатав 1-ую стр. приостанавливал печать - давая возможность перевернуть лист (воспользоваться обратной стороной листа). Ну типа Messageb('Вставьте сл. лист и нажмите ОК'). Помогите пожалуйста.
...
Рейтинг: 0 / 0
28.01.2010, 01:17
    #36434998
reware
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Reprt Form
ЛюдмилаМFoxPro 9 SP1. Немогу разобраться - при распечатки отчета который занимает более 1 листа.
Хотела чтобы принтер, распечатав 1-ую стр. приостанавливал печать - давая возможность перевернуть лист (воспользоваться обратной стороной листа). Ну типа Messageb('Вставьте сл. лист и нажмите ОК'). Помогите пожалуйста.

Отчего не помочь. Я делаю так - есть некая таблица, которую надо вывести по REPORT FORM. Кол-во записей в ней может быть любым. Вначале вычисляется, сколько записей влезет на первый лист отчета. Выводится этот первый лист отчета, выдается MESSAGEBOX('Выводить следующий лист ?'). Затем вычисляется, сколько записей влезет на второй лист отчета. Выводится этот второй лист отчета, выдается MESSAGEBOX('Выводить следующий лист ?'). И так далее, все это в цикле, выход из которого либо по отказу юзера от следующего листа, либо по концу печати последнего листа. Т.е. для печати каждого листа вначале выбираем нужные записи для него и выдаем свой отдельный REPORT FORM. А после этой команды спрашиваем юзера о продолжении печати.
...
Рейтинг: 0 / 0
28.01.2010, 07:54
    #36435098
ЛюдмилаМ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Reprt Form
Большое спасибо! воспользовавшись ответом получилось следующее:
1. Вычисляем кол-во страниц в отчете
report form myReport.frx noconsole
nPageTotal=_PAGETOTAL
2. Создаем цикл
For n=1 to nPageTotal
report form myReport.frx RANGE n,n PREVIEW
...........................
Next
3. Опция RANGE в режиме просмотра действует только при SET REPORTBEHAVIOR 90

Вычислить программно кол-во строк умещающихся на страницу не смогла, пожалуйста намекните.
...
Рейтинг: 0 / 0
28.01.2010, 09:27
    #36435208
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Reprt Form
ЛюдмилаМ,

Напечатайте несколько страниц и посмотрите, сколько строк влезает... или они у вас могут быть разной высоты?
...
Рейтинг: 0 / 0
28.01.2010, 10:06
    #36435306
reware
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Reprt Form
ЛюдмилаМБольшое спасибо! воспользовавшись ответом получилось следующее:
1. Вычисляем кол-во страниц в отчете
<далее skipped>


Без эмоций (я на своем реальном примере) :

- Мы знаем, сколько строк влазит на ПЕРВЫЙ лист отчета (там, к примеру, большая шапка отсета). Допустим 6 строк.
- Делаем report1, который будет вызываться для печати первого листа (на эти 6 строк).
- Мы знаем, сколько строк влазит на ВТОРОЙ (вплоть до ПРЕДПОСЛЕДНЕГО листа) лист отчета (там уже нет никаих шапок и подвалов). Допустим 15 строк.
- Делаем report2, который будет вызываться для печати второго-предпоследнего листа (на эти 15 строк).
- Мы знаем, сколько строк влазит на ПОСЛЕДНИЙ лист отчета (там может быть большой подвал). Допустим 7 строк.
- Делаем report3, который будет вызываться для печати последнего листа (на эти 7 строк).
Ну, и все дела. Оформляем это в виде цикла с анализом номера листа (без всякого пока участия REPORT FORM) и запускаем этот цикл. А вот уж он (внутри себя) будет анализировать свой счетчик и вызывать тот report, который должен выполняться в данный момент (report1, report2, report3).
Я уж и не знаю, как обьяснять далее. Мой рабочий код очень большой и будет вам непонятен.
...
Рейтинг: 0 / 0
28.01.2010, 10:58
    #36435489
ЛюдмилаМ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Reprt Form
Да, и строки могут быть разными и сосчитать можно самой, но хотелось бы поручить это ответственное дело машине.
Да еще дело втом, что в моём случае на печать идет через previev и пока желаемого результата нету.
...
Рейтинг: 0 / 0
28.01.2010, 11:44
    #36435656
reware
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Reprt Form
ЛюдмилаМДа, и строки могут быть разными и сосчитать можно самой, но хотелось бы поручить это ответственное дело машине.
Да еще дело втом, что в моём случае на печать идет через previev и пока желаемого результата нету.

Я-таки (без иронии) не понял вашего раздражения.
Если лично вы можете сосчитать записи, то у вас есть трудности поручить это машине ?
Насчет второго акта вашего возмущения :
Код: plaintext
1.
2.
3.
4.
IF <ваше условие>
   report form MyFrx NOCONSOLE PREVIEW
ELSE
   report form MyFrx TO PRINTER NOCONSOLE
ENDIF

А в чем, собственно, проблема ?
...
Рейтинг: 0 / 0
29.01.2010, 01:00
    #36437514
ЛюдмилаМ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Reprt Form
reware,

Никакого раздражения - нахожусь в состоянии творческого процесса!
ситуация:
- без каких-либо условий попадаем в многостраничный отчет в режим просмотра;
- сверяем там некоторые цифры (ну, например с наличностью в кассе);
- если чтото не так выходим из просмотра (SYS(2040)='1');
- если всё ОК печатаем (SYS(2040)='2') постранично с возможностью перевернуть лист, а не автоматом - весь целиком;
А вот эскиз:
n=2 && кол-во страниц
m='2' && Sys(2040)
* главное проникнуть в цикл, далее эти переменные поменяются в самом myReporte на реальные
Do While n>1 and m='2'
report form myReport Range _Pageno,_Pageno to printer nodialog Previev
* по-моему сама элегантность
??????????????????????????????
enddo
А чтоже получится на практике - пойду тестировать
...
Рейтинг: 0 / 0
29.01.2010, 02:12
    #36437552
ЛюдмилаМ,
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Reprt Form
Yes! вышеизложенная Элегантность сработала!
сразу попадаем в Previev, просматриваем, IF что не так - выходим, Else печатаем!
Всё происходит в цикле - печать по одной стр. (и сколько на ней строк - нам до-лампочки)
без каких-либо Messagebox-ов, до конца отчета или пока сам не откажешься.
Спасибо Всем!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Reprt Form / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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