Есть ли способ переработать набор данных Crystal Reports?

Я пытаюсь написать Crystal Report, в котором итоги сгруппированы иначе, чем в основном отчете. Единственный способ сделать это до сих пор - использовать подотчет для итогов, но это означает, что придется снова обращаться к источнику данных для получения тех же данных, что кажется чепухой. Вот упрощенный пример:

       date   name   earnings   source          location
-----------------------------------------------------------
12-AUG-2008   Tom      .00   washing cars    uptown
12-AUG-2008   Dick    0.00   washing cars    downtown     { main report }
12-AUG-2008   Harry    .00   mowing lawns    around town

                    total earnings for washing cars: 0.00 { subreport }
                    total earnings for mowing lawns:  .00

       date   name   earnings   source          location
-----------------------------------------------------------
13-AUG-2008   John     .00   dog walking     downtown
13-AUG-2008   Jane    5.00   washing cars    around town  { main report }
13-AUG-2008   Dave     .00   mowing lawns    around town

                    total earnings for dog walking:   .00
                    total earnings for washing cars: 5.00 { subreport }
                    total earnings for mowing lawns:  .00

В этом примере основной отчет сгруппирован по «дате», но итоги дополнительно сгруппированы по «источнику». Я просмотрел примеры использования промежуточных сумм, но они действительно не делают того, что мне нужно. Разве нет способа сохранить набор результатов, чтобы и основной, и подчиненный отчет ссылались на одни и те же данные?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
931
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Единственный способ сделать это без повторного просмотра данных - это создать несколько формул для подсчета промежуточных итогов для каждой группы. Проблема, с которой, как я полагаю, вы сталкиваетесь с существующими промежуточными итогами, заключается в том, что они предназначены для отслеживания каждой из групп, которые они суммируют. Поскольку вы, кажется, хотите, чтобы промежуточные итоги следовали за всеми «необработанными» данными, это не сработает.

Если вы создаете свои собственные формулы для каждой группы, которая просто складывает сумму из тех строк, которые соответствуют группе, вы сможете разместить их в конце отчета. Обратной стороной этого подхода является то, что итоговые итоги не будут динамическими по отношению к группам. Другими словами, если у вас есть новый «источник», он не будет отображаться в промежуточных итогах, пока вы его не добавите, или если у вас нет данных «выгула собак», у вас все равно будет промежуточный итог для него.

Ответ принят как подходящий

Хм ... как бы хорошо это ни было - вызвать сохраненную процедуру из отчета и сохранить все в одном месте, однако мы обнаружили (как и вы), что в конечном итоге вы попадаете в точку, когда вы не можете заставить кристалл делать то, что вы хочу, даже если данные есть прямо здесь.

В итоге мы представили бизнес-уровень, который находится под отчетом, и вместо того, чтобы «извлекать» данные из отчета, мы «проталкиваем» к нему наборы данных и привязываем данные к отчету. Преимущество состоит в том, что вы можете манипулировать данными в коде в наборах данных или объектах, прежде чем они попадут в отчет, а затем просто привязать данные к отчету.

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

Другие вопросы по теме