|
Reprt Form
|
|||
---|---|---|---|
#18+
FoxPro 9 SP1. Немогу разобраться - при распечатки отчета который занимает более 1 листа. Хотела чтобы принтер, распечатав 1-ую стр. приостанавливал печать - давая возможность перевернуть лист (воспользоваться обратной стороной листа). Ну типа Messageb('Вставьте сл. лист и нажмите ОК'). Помогите пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2010, 22:21 |
|
Reprt Form
|
|||
---|---|---|---|
#18+
ЛюдмилаМFoxPro 9 SP1. Немогу разобраться - при распечатки отчета который занимает более 1 листа. Хотела чтобы принтер, распечатав 1-ую стр. приостанавливал печать - давая возможность перевернуть лист (воспользоваться обратной стороной листа). Ну типа Messageb('Вставьте сл. лист и нажмите ОК'). Помогите пожалуйста. Отчего не помочь. Я делаю так - есть некая таблица, которую надо вывести по REPORT FORM. Кол-во записей в ней может быть любым. Вначале вычисляется, сколько записей влезет на первый лист отчета. Выводится этот первый лист отчета, выдается MESSAGEBOX('Выводить следующий лист ?'). Затем вычисляется, сколько записей влезет на второй лист отчета. Выводится этот второй лист отчета, выдается MESSAGEBOX('Выводить следующий лист ?'). И так далее, все это в цикле, выход из которого либо по отказу юзера от следующего листа, либо по концу печати последнего листа. Т.е. для печати каждого листа вначале выбираем нужные записи для него и выдаем свой отдельный REPORT FORM. А после этой команды спрашиваем юзера о продолжении печати. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2010, 01:17 |
|
Reprt Form
|
|||
---|---|---|---|
#18+
Большое спасибо! воспользовавшись ответом получилось следующее: 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 Вычислить программно кол-во строк умещающихся на страницу не смогла, пожалуйста намекните. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2010, 07:54 |
|
Reprt Form
|
|||
---|---|---|---|
#18+
ЛюдмилаМ, Напечатайте несколько страниц и посмотрите, сколько строк влезает... или они у вас могут быть разной высоты? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2010, 09:27 |
|
Reprt Form
|
|||
---|---|---|---|
#18+
ЛюдмилаМБольшое спасибо! воспользовавшись ответом получилось следующее: 1. Вычисляем кол-во страниц в отчете <далее skipped> Без эмоций (я на своем реальном примере) : - Мы знаем, сколько строк влазит на ПЕРВЫЙ лист отчета (там, к примеру, большая шапка отсета). Допустим 6 строк. - Делаем report1, который будет вызываться для печати первого листа (на эти 6 строк). - Мы знаем, сколько строк влазит на ВТОРОЙ (вплоть до ПРЕДПОСЛЕДНЕГО листа) лист отчета (там уже нет никаих шапок и подвалов). Допустим 15 строк. - Делаем report2, который будет вызываться для печати второго-предпоследнего листа (на эти 15 строк). - Мы знаем, сколько строк влазит на ПОСЛЕДНИЙ лист отчета (там может быть большой подвал). Допустим 7 строк. - Делаем report3, который будет вызываться для печати последнего листа (на эти 7 строк). Ну, и все дела. Оформляем это в виде цикла с анализом номера листа (без всякого пока участия REPORT FORM) и запускаем этот цикл. А вот уж он (внутри себя) будет анализировать свой счетчик и вызывать тот report, который должен выполняться в данный момент (report1, report2, report3). Я уж и не знаю, как обьяснять далее. Мой рабочий код очень большой и будет вам непонятен. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2010, 10:06 |
|
Reprt Form
|
|||
---|---|---|---|
#18+
Да, и строки могут быть разными и сосчитать можно самой, но хотелось бы поручить это ответственное дело машине. Да еще дело втом, что в моём случае на печать идет через previev и пока желаемого результата нету. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2010, 10:58 |
|
Reprt Form
|
|||
---|---|---|---|
#18+
ЛюдмилаМДа, и строки могут быть разными и сосчитать можно самой, но хотелось бы поручить это ответственное дело машине. Да еще дело втом, что в моём случае на печать идет через previev и пока желаемого результата нету. Я-таки (без иронии) не понял вашего раздражения. Если лично вы можете сосчитать записи, то у вас есть трудности поручить это машине ? Насчет второго акта вашего возмущения : Код: plaintext 1. 2. 3. 4.
А в чем, собственно, проблема ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2010, 11:44 |
|
Reprt Form
|
|||
---|---|---|---|
#18+
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 А чтоже получится на практике - пойду тестировать ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2010, 01:00 |
|
Reprt Form
|
|||
---|---|---|---|
#18+
Yes! вышеизложенная Элегантность сработала! сразу попадаем в Previev, просматриваем, IF что не так - выходим, Else печатаем! Всё происходит в цикле - печать по одной стр. (и сколько на ней строк - нам до-лампочки) без каких-либо Messagebox-ов, до конца отчета или пока сам не откажешься. Спасибо Всем! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2010, 02:12 |
|
|
start [/forum/topic.php?fid=41&gotonew=1&tid=1585644]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
10ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 346ms |
total: | 478ms |
0 / 0 |