Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Печать многостраничного документа / 9 сообщений из 9, страница 1 из 1
29.08.2003, 20:48
    #32251939
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать многостраничного документа
Привет всем.

Каким образом заставить Report в случае когда Summary и последняя запись в Detail не помещаются _вместе_ на текущей странице перенести их на следующую ?
...
Рейтинг: 0 / 0
30.08.2003, 09:46
    #32251989
ЗВН
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать многостраничного документа
В седьмом Не нашел

для себя решил просто их пронумеровать
Код: plaintext
 "Page "  + ALLTRIM(STR(_PAGENO))


есть еще варианты с Внешними репортами
типо Excel тан можно самому выбирать

Ну вообще про встроенный репорт
трабл:
как распечатать по номеру страницы, когда нужна вторая,а их 75, например
Или надо разрешить копировать в буфер

Сори!
...
Рейтинг: 0 / 0
01.09.2003, 12:30
    #32252537
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать многостраничного документа
2 Glory

Я сделал на VFP6 специальный проект примеров для решения ряда задач генератора отчетов и выложил его на nsvisual.com, но сейчас этот сайт недоступен. Могу скинуть его тебе, если нужно (мой e-mail открыт в профиле).

В данном случае суть решения заключается в том, чтобы "склеить" последнюю запись отчета и подвал.

-) Вместо полосы Summary следует использовать подвал группировки по специальной группе, значение которой вообще не меняется на протяжении всего отчета. Для этой цели делается внешняя группа по константе (можно в качестве признака группировки написать число "1") или по функции EOF()

-) Необходимо ДО выполнения отчета вычислить признак последней записи отчета (EOF() не подойдет, поскольку примет значение .T. ПОСЛЕ печати последней записи, а необходимо в момент печати). В качестве признака может выступать физический номер записи (Recno()) или значение поля.

-) Содержимое полосы Detail дублируется в подвале этой группы непосредственно перед итогами

-) В самой полосе Detail на каждый объект устанавливается условие печати (Print When) - не печатать, если выполнился признак последней записи отчета.

Если у отчета есть несколько групп, то полоса Detail дублируется только в самой внутренней Group Footer (той, что ближе всего к Detail).

Недостатком такого решения является избыточное пустое пространство на предпоследней странице отчета (не напечатанная полоса Detail)

2 ЗВН

Это был вопрос? Тогда я не понял о чем
...
Рейтинг: 0 / 0
01.09.2003, 13:58
    #32252672
sergej57
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать многостраничного документа
ДАННУЮ ПРОБЛЕМУ Я РЕШАЛ СЛЕДУЮЩИМ ОБРАЗОМ:

-ЭКСПЕРИМЕНТАЛЬНО ОПРЕДЕЛЯЛ ПРИ ПРОЕКТИРОВАНИИ КОЛИЧЕСТВО ЗАПИСЕЙ, ПОМЕЩАЕМЫХ НА 1 ЛИСТЕ С УЧЕТОМ РАЗМЕЩЕНИЯ И ИТОГОВЫХ СУММ И ПОДПИСЕЙ НА 1 ЛИСТЕ, НА ВТОРОМ НА 1 И 2 ЛИСТАХ, С УЧЕТОМ ТОГО, ЧТО СУММА И ПОДПИСЬ ПОМЕСТЯТСЯ НА 2 ЛИСТЕ, ;
- РАЗРАБАТЫВАЮ ФОРМЫ ОТЧЕТА - ТИТУЛЬНЫЙ С ИТОГОМ, ТИТУЛЬНЫЙ БЕЗ СУММЫ, ПРОМЕЖУТОЧНЫЙ БЕЗ ИТОГОВ И ПРОМЕЖУТОЧНЫЙ С СУММАМИ И ПОДПИСЯМИ
- ЗАТЕМ В ЗАВИСИМОСТИ ОТ КОЛ-ВА ЗАПИСЕЙ ВЫБИРАЮ ВАРИАНТ РАСПЕЧАТКИ,
РАЗБИВАЮ ИТОГОВУЮ БАЗУ НА ЧАСТИ С УЧЕТОМ ПОЛНОГО ЗАПОЛНЕНИЯ ЛИСТОВ , ИСПОЛЬЗУЮ ОПРЕДЕЛЕННЫЕ ФОРМЫ ОТЧЕТА И ПЕЧАТАЮ.
СВОБОДНОГО МЕСТА НА ЛИСТАХ НЕТ. ВОЗМОЖНО КАЖЕТСЯ ВНАЧАЛЕ
СЛОЖНО, ЗАТО ГАРАНТИРОВАННЫЙ ПЕРЕНОС ХОТЯ- БЫ ОДНОЙ СТРОКИ НА НОВУЮ ВМЕСТЕ С ПОДПИСЯМИ И ИТОГАМИ.
ПРЕДЛОЖЕННЫЙ СПОСОБ С ИСПОЛЬЗОВАНИЕМ ГРУППИРОВКИ, КАК ПРАВИЛО, ОСТАВЛЯЕТ СВОБОДНОЕ МЕСТО В КОНЦЕ ЛИСТА,ЧТО НЕ ДОПУСТИМО В ФИНАНСОВЫХ ДОКУМЕНТАХ.
УДАЧИ!!!
...
Рейтинг: 0 / 0
01.09.2003, 14:28
    #32252717
Андрей Давыдов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать многостраничного документа
Не в тему но:

Зачем мучаться с фоксовым рапортом, когда можно выводить в Excel.
ИМХО: Более менее сложный отчет слепить это гемор полный.
Пока протыкаешь все поля - полдня пройдет.
...
Рейтинг: 0 / 0
01.09.2003, 15:10
    #32252778
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать многостраничного документа
Ну если человек спрашивает значит так надо... ИМХО глупо учить такого профи как Glory...
...
Рейтинг: 0 / 0
01.09.2003, 15:54
    #32252857
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать многостраничного документа
2ВладимирМ
Спасибо большле - все получилось.

2sergej57
Да, на сложных отчетах с многими группировками так и будет. Но для отчета без группировки очень даже приемлимо.

2Андрей Давыдов
А нужно это когда идет массовая печать счетов. Когда их количество переваливает за сотню любой более менее здравый пользователь не захочет править их а попытается свалить это на программера.
...
Рейтинг: 0 / 0
01.09.2003, 19:20
    #32253117
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать многостраничного документа
2ВладимирМ В общем, все правильно.

Но я в FPD делал проще, причем в моем случае если при печати последней записи на странице остается достаточно места, последняя запись и подвал печатаются на этой же странице. В VFP не делал, так что может быть, мой метод не сработает. Если будете проверять и обнаружите, что срабатывает, черкните сюда свой комментарий, pls (жду также заслуженных восторженных возгласов ;-))!

1. Как и рекомендовано, определял до начала отчета признак последней записи.
2. Создавал фиктивную группу (абсолютно не содержащую объектов!) по условию выполнения печати последней записи.
3. Все, связанное с Summary, оставлял в Summary.
4. Подсчитывал суммарное количество строк в Summary и PgFoot плюс одна строка на печать последней строки (Detail - если каждая строка была в рамочке, то плюс две строки). Получал, например, 27.
5. Открывал свойства фиктивной группы и снимал все галки - с "New Page", "Swap Page Header", "Swap Page Footer", "Reprint Header", "Reset Page Number". А в "# of rows following by header" записывал полученное ранее число 27. При этом, если последняя запись - т.е. новая группа - печатается менее чем за 27 строк от конца страницы, Fox ее сам переносит на новую страницу.

Соответственно, шапка таблицы была в PgHead.
Соответственно, количество строк на странице должно быть больше, чем 27+количество в Title+количество в PgHead ;-)
...
Рейтинг: 0 / 0
02.09.2003, 12:43
    #32253571
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать многостраничного документа
Я с генератором отчетов в FPD не очень много работал. Но судя по описанию, его логика работы отличается от логики работы в VFP.

Особенности работы генератора отчетов в VFP

1) Если полоса Summary в гордом одиночестве печатается на последней странице, то не будет печати Page Footer на этой последней страницы.

2) Нет такого понятия как "# of rows following by header". Ты просто раздвигаешь соответствующую полосу на нужную высоту.

3) Расчет места необходимого для печати определяется для каждой полосы. Т.е. вполне допустима ситуация когда на одной странице напечатана полоса Detail, а Group Footer на следующей странице. В результате, опираться на высоту фиктивной Group Footer, для предотвращения печати полосы Detail не получится. При расчете места для печати Detail он просто не учитывается :(

4) В FoxPor for Windows появилась возможность печати строк неопределенной длины. Т.е. при создании отчета она занимает одну строку, а при реальной печати - столько строк, сколько необходимо. Это значит, что в общем случае невозможно определить сколько строк (какой высоты) будет данная конкретная полоса деталировки в отчете.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Печать многостраничного документа / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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