|
|
|
Вопрос о Reports. Промежуточные итоги.
|
|||
|---|---|---|---|
|
#18+
Hi, All. Вопрос (очередной?) насчет печати итогов по странице. Проблема вот в чем. Если выводить итоги по странице в PageFooter, то между последней Detail и PageFooter остается просвет, размеры которого варьируются в зависимости от содержания. Решение напрашивается такое: добавить группу (напр. по RECCOUNT()) и итоги по странице показывать в Group Footer. Только итоги печатать надо у последних Detail (по Print When) Основная проблема такая: надо расчитать, что текущий Detail последний на странице и места остается только на Group Footer и дать добро по Print When печати Group Footer. Как это можно сделать или есть другое решение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2005, 16:16:31 |
|
||
|
Вопрос о Reports. Промежуточные итоги.
|
|||
|---|---|---|---|
|
#18+
Если версия не ниже 7, то в качестве условия печати Print When установи _PageNo<_PageTotal Т.е. Group Footer - печатается всегда вне зависимости от условий, а во всех объектах Page Footer укажи это условие. Да, в качестве признака группировки в данном случае можно указать константу. Подойдет просто цифра 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2005, 16:53:23 |
|
||
|
Вопрос о Reports. Промежуточные итоги.
|
|||
|---|---|---|---|
|
#18+
ВладимирМЕсли версия не ниже 7 Версия 9 ВладимирМ _PageNo<_PageTotal Т.е. Group Footer - печатается всегда вне зависимости от условий, а во всех объектах Page Footer укажи это условие. Да, в качестве признака группировки в данном случае можно указать константу. Подойдет просто цифра 1. Если условия группировки просто цифра 1, то итоги по группе печатаются только в самом конце. Т.е. эта группировка помогает в итогах по последней странице, что хорошо. Хотя для этого подойдет просто Summary, где суммировать значения и сбрасывать Reset Based On: Page Итоги по странице в середине отчета (не на последней странице, т.е. при условии _PageNo<_PageTotal) в итоге все равно печатается в Page Footer. А между Page Footer и последней Detail все равно дырочка остается. А вот эту дырочку и требуется ликвидировать между Detail и итогами по странице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 06:27:55 |
|
||
|
Вопрос о Reports. Промежуточные итоги.
|
|||
|---|---|---|---|
|
#18+
Посмотри пример во вложении ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 10:16:16 |
|
||
|
Вопрос о Reports. Промежуточные итоги.
|
|||
|---|---|---|---|
|
#18+
ВладимирМПосмотри пример во вложении Все правильно. Только проблема остается. Между последней Detail и Page Footer на странице (не последней) расстояние не нулевое и плавает от страницы к странице. Особенно это будет заметно на бухгалтерских документах где требуются итоги по странице. Они разлинованы на графы (линиями) и поэтому сильно бросается в глаза. Я уже подумываю разлиновку граф (линий) в Page Footer убрать:-( Особенно плохо в ТТН, т.к. там в Page Footer толстые горизонтальные линии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 11:36:13 |
|
||
|
Вопрос о Reports. Промежуточные итоги.
|
|||
|---|---|---|---|
|
#18+
Извини, я тебя не понимаю. Может сделаешь простой отчет на пару страниц и выложишь во вложение? Ты, когда устанавливаешь Print When используешь "птичку" "Remove Line if Blank"? Если имеется в виду, что высота каждой полосы Detail может быть различна из-за объектов со свойством "Stretch with overflow", то здесь вообще ничего поделать нельзя. Вполне возможна ситуация, когда начало полосы Detail на одной странице, а завершение на другой. Если таких полей нет и высота полосы Detail всегда строго фиксирована, то не вижу проблемы. Надо просто подогнать эту высоты так, чтобы на страницу умещалось целое количество полос Detail. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 12:05:44 |
|
||
|
Вопрос о Reports. Промежуточные итоги.
|
|||
|---|---|---|---|
|
#18+
ВладимирМИзвини, я тебя не понимаю. Может сделаешь простой отчет на пару страниц и выложишь во вложение? Владимир, твой пример переделал. На первой странице между последней Detail и PageFooter дырка. ВладимирМ... высота полосы Detail всегда строго фиксирована, то не вижу проблемы... Не фиксирована:-( Решение в принципе я вижу - печатать итоги по странице в Group Footer, но надо точно рассчитать, сколько полос влезет на страницу, проставить в выборке код страницы для группировки, чтобы Group Footer точно напечаталось внизу страницы, а PageFooter не использовать. В принипе вроде получается вроде работоспособное решение, но к каждому отчета придется индивидуально подходить. Пока красивого и универсального решения нету:-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 13:20:55 |
|
||
|
Вопрос о Reports. Промежуточные итоги.
|
|||
|---|---|---|---|
|
#18+
Пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 13:22:55 |
|
||
|
Вопрос о Reports. Промежуточные итоги.
|
|||
|---|---|---|---|
|
#18+
Если в Detail есть строки со свойство "Stretch with overflow", то единственное решение - это многократный прогон "в никуда" для вычисления тех записей, на которых происходит переход на следующую страницу. Проблема в том, что FoxPro предварительно выделяет для очередной полосы печати столько места, какова высота этой полосы в дизайнере отчета. "Расширение" происходит по месту. Т.е. вполне может оказаться начало полосы Detail на одной странице, а окончание - на другой. И куда, в этом случае записать итог? Там, где начало или там, где конец? Или запретить разрыв полосы Detail? В общем, действительно решение через дополнительную группировку. Признак группировки - это дополнительное поле во временной таблице - источнике для отчета. Каждая группа печатается с новой страницы. Начинаешь с одного значения 1, а затем на основе анализа значения _PageNo в полосе On Entry для Detail Header и в полосе On Exit для Detail Footer делаешь вывод о факте перехода на другую страницу. И крутишь этот отчет "в никуда" до тех пор, пока не переберешь все страницы. В полосах On Entry и On Exit можно ставить вызов внешних (по отношению к отчету) функций. В них и делать модификацию служебного поля таблицы. Это как общая идея. Сам я таким не занимался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 14:49:31 |
|
||
|
Вопрос о Reports. Промежуточные итоги.
|
|||
|---|---|---|---|
|
#18+
Вот, вроде получилось. Правда есть некоторые непонятки. Например с областью видимости переменных. Пришлось флаг объявлять как PUBLIC Еще одна проблема - это прогон отчета "в никуда". Раньше получалось послать в NUL (одна буква "L"). Но на XP - это не проходит. Посылает на принтер. Приходится посылать в текстовый файл. Если не указать источник вывода, то это вывод в экран и в качестве размера листа будет выбран размер экрана. Это не то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 18:02:17 |
|
||
|
Вопрос о Reports. Промежуточные итоги.
|
|||
|---|---|---|---|
|
#18+
ОК. Я понял. Примерно так рассуждал, но искал уже готовое решение. Спасибо, Владимир, за обсуждение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 07:42:46 |
|
||
|
Вопрос о Reports. Промежуточные итоги.
|
|||
|---|---|---|---|
|
#18+
Hi dgalkov! По сути в фоксовом отчёте PageFooter печатается не "когда закончатся полосы Detail"? а ВСЕГДА на фиксированном расстоянии от нижнего края листа. Так что ты прав насчёт переноса этих итогов в Group Footer... Плохо конечно что высота полос Detail различается - иначе можно было-бы сравнительно просто рассчитать "разбиение" на страницы. Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2005, 00:55:41 |
|
||
|
Вопрос о Reports. Промежуточные итоги.
|
|||
|---|---|---|---|
|
#18+
Igor KorolyovПлохо конечно что высота полос Detail различается - иначе можно было-бы сравнительно просто рассчитать "разбиение" на страницы. При одинаковой высоте Detail рассчитать конечно же можно, но кузяво все-таки. Хотелось бы что бы отчет сам подсчитывал сколько осталось... Единственный вариант - изучить ReportListener: может там есть такая возможность. Но это после отпуска. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2005, 09:57:19 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33197175&tid=1593726]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
207ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 520ms |

| 0 / 0 |
