:: Visual Foxpro, Foxpro for DOS
удваивание суммы при 2-х detail band
glaz58
Автор

Сообщений: 812
Откуда: Воронеж
Дата регистрации: 09.02.2008
Уважаемые знатоки! В прикреплении упрощённый вариант для иллюстрации. Для просмотра результата запустить программу itog. В показанном случае нет необходимости городить 2 detail band, это для иллюстрации, что при 2-х detail band сумма в Group Footer удваивается. Как избавиться от удвоения? Можно просто поделить на 2, но мне кажется, что есть более правильный способ, который мне неизвестен, поэтому прошу помощи у знатоков.
Ratings: 0 negative/0 positive
Re: удваивание суммы при 2-х detail band
akvvohinc

Сообщений: 4216
Откуда: Москва
Дата регистрации: 11.11.2008
Похоже, вы неправильно понимаете работу в режиме Multiple-Detail Bands.

Почитайте об этом для начала документацию:
What's New in the Visual FoxPro 9.0 Report Writer

И в частности следующие подразделы:
Driving the Report
The "Target Alias"
Relations

Там есть пример такого отчета - постарайтесь понять, что там, для чего и как.

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

Потому что в примере, который вы привели здесь, Target Alias для Detail'ов не указан, следовательно, по умолчанию для обоих это будет та же самая таблица (tabla) - вот значения и задвоились (создадите аналогичный Detail-3 - затроятся и т.д).



Исправлено 1 раз(а). Последнее : akvvohinc, 23.10.21 22:12
Ratings: 0 negative/0 positive
Re: удваивание суммы при 2-х detail band
glaz58
Автор

Сообщений: 812
Откуда: Воронеж
Дата регистрации: 09.02.2008
Спасибо за внимание к теме. В примере, который приведён здесь, всё максимально похоже на реальные таблицы, только упрощено для иллюстративности. Target alias я не указал, потому что и в реальных таблицах его нет. Мне только нужно, чтобы в Group Footer суммировались значения из detail1 и не удваивались.
Ratings: 0 negative/0 positive
Re: удваивание суммы при 2-х detail band
sphinx

Сообщений: 31179
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Сергей (akvvohinc) как Максимов - всегда подскажет, и примеры приведет. И без ненужного сарказма. Фокса на выходных нет, подключусь, если коллеги не помогут. Что вряд ли.

А что почитать - Сергей привел. Вы не начинающий, поди разберетесь. Если нет - решим вашу проблему - я, Сергей, или кто-то другой.


------------------
"Veni, vidi, vici!"(с)




Исправлено 1 раз(а). Последнее : sphinx, 24.10.21 12:38
Ratings: 0 negative/0 positive
Re: удваивание суммы при 2-х detail band
glaz58
Автор

Сообщений: 812
Откуда: Воронеж
Дата регистрации: 09.02.2008
sphinx
И без ненужного сарказма.
При получившем распространение троллинге (даже здесь) это действительно ценно. Пока то, что я прочитал, мне не помогло. Понятие "Target alias" мне не ясно, в моём случае его нет. Есть только одна таблица, связанная по Relation с несколькими таблицами. В приведённом примере это Tabla, связанная по nrazd с таблицей Razdel. Этот упрощённый пример соответствует реальной проблеме, только там полей больше и действия более разнообразные. Но сущность та же. Я применил возможность иметь более одного detail band несколько "ненаучно". Но проблема оформления репорта для меня таким образом решилась.


Исправлено 1 раз(а). Последнее : glaz58, 24.10.21 15:01
Ratings: 0 negative/0 positive
Re: удваивание суммы при 2-х detail band
sphinx

Сообщений: 31179
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
glaz58
sphinx
И без ненужного сарказма.
При получившем распространение троллинге (даже здесь) это действительно ценно. Пока то, что я прочитал, мне не помогло. Понятие "Target alias" мне не ясно, в моём случае его нет. Есть только одна таблица, связанная по Relation с несколькими таблицами. В приведённом примере это Tabla, связанная по nrazd с таблицей Razdel. Этот упрощённый пример соответствует реальной проблеме, только там полей больше и действия более разнообразные. Но сущность та же. Я применил возможность иметь более одного detail band несколько "ненаучно". Но проблема оформления репорта для меня таким образом решилась.

Я понял. Скачаю ваш репрокод, завтра на работе с коллегами ( за Фокс я отвечаю, но есть тим-лидер, тоже уже 8 лет в фоксе погряз ). Вопроизведем - решим. А пока я как гнморрой по фотку не рещу. Может коллеги подключатся и кто-то быстрее поковыпяет.

Сорри, с грпмматикой ок, просто мобильный. Предупредил.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: удваивание суммы при 2-х detail band
sphinx

Сообщений: 31179
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Цитата:
При получившем распространение троллинге (даже здесь) это действительно ценно.

Я за стеб - за. Но только если при этом идут попытки помощи. А когда- ой, надо книги читать...Ну фу так. Гугл и книги читаем, но не все знаем.Смею заверить, что на Девкон-2008 Журавлев спросил, кто себя считает гуру? Не было леса рук. Нормальный бытовой аопрос, поможем (может и не я).


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: удваивание суммы при 2-х detail band
sphinx

Сообщений: 31179
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Это не проблема, вот всем миром Тане (Tata) помогали, это реально рак мозгов. И я не все решил - Дроздов стоял у истоков, ИК помог советами. А допинал все Журавлев. Мне сейчас такой подвиг не повторить. Тогда взвился, что помочь надо. Я не гуру.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: удваивание суммы при 2-х detail band
Taran

Сообщений: 13624
Откуда: Красноярск
Дата регистрации: 16.01.2008
Ты при выводе деталей видимо учитываешь тип строки?
Ну так и поле суммирования надо прописывать этот фильтр.
Ratings: 0 negative/0 positive
Re: удваивание суммы при 2-х detail band
akvvohinc

Сообщений: 4216
Откуда: Москва
Дата регистрации: 11.11.2008
glaz58
Мне только нужно, чтобы в Group Footer суммировались значения из detail1 и не удваивались.
Для приведенного примера ответ прост - уберите "неправильный" и ненужный Detail-2 - и всё будет Ok.

А когда вы ответите на это, вам, вероятно помогут:
akvvohinc
А пока просто расскажите, какие таблицы вы должны выводить в реальном отчете, как они между собой связаны, что вы собираетесь выводить в Detail-1, а что - в Detail-2.
Ratings: 0 negative/0 positive
Re: удваивание суммы при 2-х detail band
akvvohinc

Сообщений: 4216
Откуда: Москва
Дата регистрации: 11.11.2008
glaz58
Этот упрощённый пример соответствует реальной проблеме, только там полей больше и действия более разнообразные. Но сущность та же.
Сущность, видимо, не та же, так как для приведенного примера Detail-2 не нужен.

glaz58
Пока то, что я прочитал, мне не помогло. Понятие "Target alias" мне не ясно, в моём случае его нет. Есть только одна таблица, связанная по Relation с несколькими таблицами. В приведённом примере это Tabla, связанная по nrazd с таблицей Razdel.
Пока вы не разберетесь, что же такое и как использовать Multiple-Detail Bands, ничего не получится.
Если в вашем случае "Target alias" нет (хотя как вы могли это решить, если вам непонятно, что же такое Target alias?), то неоткуда взяться и Detail-2.
Detail-1, Detail-2 и прочие полосы - это не просто место, в котором что-то выводится - в отчете всё взаимосвязано, и есть вполне определенная логика его работы, её надо понимать, а не громоздить полосы "чисто механически".

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



Исправлено 2 раз(а). Последнее : akvvohinc, 24.10.21 17:26
Ratings: 0 negative/1 positive
Re: удваивание суммы при 2-х detail band
akvvohinc

Сообщений: 4216
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
Я применил возможность иметь более одного detail band несколько "ненаучно". Но проблема оформления репорта для меня таким образом решилась.

Сразу не обратил внимания на это.

"Ненаучность" применения второго Detail'а, возможно, решило вам какую-то неозвученную проблему, но вполне закономерно создало новую.

Наверно, будет проще решить вашу первую проблему, оставаясь в рамках научности одного Detail'а.
Так озвучьте её.
Ratings: 0 negative/0 positive
Re: удваивание суммы при 2-х detail band
glaz58
Автор

Сообщений: 812
Откуда: Воронеж
Дата регистрации: 09.02.2008
В примере нарочно в detail1 черта, а сумма удваивается.
Ratings: 0 negative/0 positive
Re: удваивание суммы при 2-х detail band
glaz58
Автор

Сообщений: 812
Откуда: Воронеж
Дата регистрации: 09.02.2008
В прикреплении smetaobind2020 файлы репорта, а в smetarab рабочая таблица. К сожалению не могу прикрепить выход, так как размер не могу ужать до 50 Kb. В репорте с помощью 2-х detail band я решил проблему различного отображения в зависимости от значения поля Index=1 или нет(print when). В Group Footer надо суммировать поля только для Index!=1, так как когда Index=1, соответствующее поле пусто. Сейчас проблему решаю просто делением на 2.
Ratings: 0 negative/0 positive
Re: удваивание суммы при 2-х detail band
Taran

Сообщений: 13624
Откуда: Красноярск
Дата регистрации: 16.01.2008
Я выше писал про выражение..
В поле отчёта Expression указывай не просто поле, к примеру sum
а выражение
Iif(index=1, sum, 0)

Пример твой посмотреть не могу.
Ratings: 0 negative/0 positive
Re: удваивание суммы при 2-х detail band
akvvohinc

Сообщений: 4216
Откуда: Москва
Дата регистрации: 11.11.2008
Taran
В поле отчёта Expression указывай не просто поле, к примеру sum
а выражение
Iif(index=1, sum, 0)

Так не пойдёт - из-за второго Detail'a у него все записи фактически задвоились.
То есть, если у него две записи - одна с суммой 10 (при index=1) и вторая с суммой 20 (при index=2), то получить он хочет 30.
Твоё выражение приведет к итогу 10+10 = 20 (так как из-за второго Detail'a у него как бы две записи с index=1 и две - с index=2).

Именно поэтому ему приходится делить на 2.

glaz58
В примере нарочно в detail1 черта, а сумма удваивается.

А черта - это указание Фоксу "не удваивать сумму"?
Я предлагал всё же разобраться с логикой работы таких отчетов, чтобы действовать осмысленно, а не методом тыка - вдруг получится?

glaz58
В репорте с помощью 2-х detail band я решил проблему различного отображения в зависимости от значения поля Index=1 или нет(print when).

Ничто не мешало нарисовать всё то же самое и с теми же условиями на одной полосе.
А то, что некоторые поля наложатся друг на друга - ничего страшного - ведь вместе они никогда не выводятся.

Но можно было и не накладывать, так как у объектов отчета есть такие свойства:
Remove line if blank
Object position
Stretch with overflow

Все вместе они должны позволить сделать желаемое в одном Detail'e даже без наложения.
Например, ваша строка для Index=1 "исчезнет" для записей с Index=2, если все её объекты будут помечены как Remove line if blank, а объекты с Index=2 (те, что сейчас в Detail-2) займут её место (поднимутся выше).

То же самое и с объектами с Index=2 - при Remove line if blank они не будут выводиться при Index=1, а место, которое они занимали в Design-time, будет "вырезано" из результата.



Исправлено 4 раз(а). Последнее : akvvohinc, 26.10.21 03:51
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 25 Артём  (Гостей: 24)

© 2000-2024 Fox Club 
Яндекс.Метрика