powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопрос о Reports. Промежуточные итоги.
13 сообщений из 13, страница 1 из 1
Вопрос о Reports. Промежуточные итоги.
    #33197175
dgalkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi, All.

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

Как это можно сделать или есть другое решение?
...
Рейтинг: 0 / 0
Вопрос о Reports. Промежуточные итоги.
    #33197320
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если версия не ниже 7, то в качестве условия печати Print When установи

_PageNo<_PageTotal

Т.е. Group Footer - печатается всегда вне зависимости от условий, а во всех объектах Page Footer укажи это условие.

Да, в качестве признака группировки в данном случае можно указать константу. Подойдет просто цифра 1.
...
Рейтинг: 0 / 0
Вопрос о Reports. Промежуточные итоги.
    #33198020
dgalkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМЕсли версия не ниже 7
Версия 9

ВладимирМ
_PageNo<_PageTotal

Т.е. Group Footer - печатается всегда вне зависимости от условий, а во всех объектах Page Footer укажи это условие.

Да, в качестве признака группировки в данном случае можно указать константу. Подойдет просто цифра 1.

Если условия группировки просто цифра 1, то итоги по группе печатаются только в самом конце. Т.е. эта группировка помогает в итогах по последней странице, что хорошо. Хотя для этого подойдет просто Summary, где суммировать значения и сбрасывать Reset Based On: Page

Итоги по странице в середине отчета (не на последней странице, т.е. при условии _PageNo<_PageTotal) в итоге все равно печатается в Page Footer.

А между Page Footer и последней Detail все равно дырочка остается. А вот эту дырочку и требуется ликвидировать между Detail и итогами по странице.
...
Рейтинг: 0 / 0
Вопрос о Reports. Промежуточные итоги.
    #33198277
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри пример во вложении
...
Рейтинг: 0 / 0
Вопрос о Reports. Промежуточные итоги.
    #33198604
dgalkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМПосмотри пример во вложении

Все правильно. Только проблема остается. Между последней Detail и Page Footer на странице (не последней) расстояние не нулевое и плавает от страницы к странице.
Особенно это будет заметно на бухгалтерских документах где требуются итоги по странице. Они разлинованы на графы (линиями) и поэтому сильно бросается в глаза.
Я уже подумываю разлиновку граф (линий) в Page Footer убрать:-(

Особенно плохо в ТТН, т.к. там в Page Footer толстые горизонтальные линии.
...
Рейтинг: 0 / 0
Вопрос о Reports. Промежуточные итоги.
    #33198727
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извини, я тебя не понимаю. Может сделаешь простой отчет на пару страниц и выложишь во вложение?

Ты, когда устанавливаешь Print When используешь "птичку" "Remove Line if Blank"?

Если имеется в виду, что высота каждой полосы Detail может быть различна из-за объектов со свойством "Stretch with overflow", то здесь вообще ничего поделать нельзя. Вполне возможна ситуация, когда начало полосы Detail на одной странице, а завершение на другой.

Если таких полей нет и высота полосы Detail всегда строго фиксирована, то не вижу проблемы. Надо просто подогнать эту высоты так, чтобы на страницу умещалось целое количество полос Detail.
...
Рейтинг: 0 / 0
Вопрос о Reports. Промежуточные итоги.
    #33198984
dgalkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМИзвини, я тебя не понимаю. Может сделаешь простой отчет на пару страниц и выложишь во вложение?

Владимир, твой пример переделал. На первой странице между последней Detail и PageFooter дырка.

ВладимирМ... высота полосы Detail всегда строго фиксирована, то не вижу проблемы...
Не фиксирована:-(

Решение в принципе я вижу - печатать итоги по странице в Group Footer, но надо точно рассчитать, сколько полос влезет на страницу, проставить в выборке код страницы для группировки, чтобы Group Footer точно напечаталось внизу страницы, а PageFooter не использовать.

В принипе вроде получается вроде работоспособное решение, но к каждому отчета придется индивидуально подходить.

Пока красивого и универсального решения нету:-(
...
Рейтинг: 0 / 0
Вопрос о Reports. Промежуточные итоги.
    #33198991
dgalkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пример.
...
Рейтинг: 0 / 0
Вопрос о Reports. Промежуточные итоги.
    #33199364
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в Detail есть строки со свойство "Stretch with overflow", то единственное решение - это многократный прогон "в никуда" для вычисления тех записей, на которых происходит переход на следующую страницу.

Проблема в том, что FoxPro предварительно выделяет для очередной полосы печати столько места, какова высота этой полосы в дизайнере отчета. "Расширение" происходит по месту. Т.е. вполне может оказаться начало полосы Detail на одной странице, а окончание - на другой. И куда, в этом случае записать итог? Там, где начало или там, где конец? Или запретить разрыв полосы Detail?

В общем, действительно решение через дополнительную группировку. Признак группировки - это дополнительное поле во временной таблице - источнике для отчета. Каждая группа печатается с новой страницы.

Начинаешь с одного значения 1, а затем на основе анализа значения _PageNo в полосе On Entry для Detail Header и в полосе On Exit для Detail Footer делаешь вывод о факте перехода на другую страницу. И крутишь этот отчет "в никуда" до тех пор, пока не переберешь все страницы.

В полосах On Entry и On Exit можно ставить вызов внешних (по отношению к отчету) функций. В них и делать модификацию служебного поля таблицы.

Это как общая идея. Сам я таким не занимался.
...
Рейтинг: 0 / 0
Вопрос о Reports. Промежуточные итоги.
    #33200140
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, вроде получилось. Правда есть некоторые непонятки. Например с областью видимости переменных. Пришлось флаг объявлять как PUBLIC

Еще одна проблема - это прогон отчета "в никуда". Раньше получалось послать в NUL (одна буква "L"). Но на XP - это не проходит. Посылает на принтер. Приходится посылать в текстовый файл. Если не указать источник вывода, то это вывод в экран и в качестве размера листа будет выбран размер экрана. Это не то...
...
Рейтинг: 0 / 0
Вопрос о Reports. Промежуточные итоги.
    #33200687
dgalkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОК. Я понял.
Примерно так рассуждал, но искал уже готовое решение.

Спасибо, Владимир, за обсуждение.
...
Рейтинг: 0 / 0
Вопрос о Reports. Промежуточные итоги.
    #33202903
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi dgalkov!

По сути в фоксовом отчёте PageFooter печатается не "когда закончатся полосы
Detail"? а ВСЕГДА на фиксированном расстоянии от нижнего края листа. Так что
ты прав насчёт переноса этих итогов в Group Footer...
Плохо конечно что высота полос Detail различается - иначе можно было-бы
сравнительно просто рассчитать "разбиение" на страницы.

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Вопрос о Reports. Промежуточные итоги.
    #33203191
dgalkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Igor KorolyovПлохо конечно что высота полос Detail различается - иначе можно было-бы сравнительно просто рассчитать "разбиение" на страницы.


При одинаковой высоте Detail рассчитать конечно же можно, но кузяво все-таки. Хотелось бы что бы отчет сам подсчитывал сколько осталось...

Единственный вариант - изучить ReportListener: может там есть такая возможность.

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


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