Crystal Reports — Группировка по

#sql #crystal-reports

#sql #crystal-отчеты

Вопрос:

Я использую Visual Studio 2008 и хотел бы представить следующий SQL-запрос в отчете:

 select name, count(*) from mytable group by name;
  

Я могу достичь этого, создав набор данных, который по сути является приведенным выше запросом (состоящий из столбцов ‘name’ и ‘count’), однако создание дополнительного набора данных только для этого запроса кажется излишним. Я бы предпочел делать то, что я делал с другими отчетами в моем проекте, а именно иметь набор данных, который представляет собой всю таблицу:

 select * from mytable;
  

А затем используйте функции Crystal Report для выполнения группировки. Однако я не могу найти способ выполнить эту группировку. Я предполагаю, что это возможно? Это позволило бы мне повторно использовать набор данных для других областей проекта вместо того, чтобы создавать уникальный набор данных для каждого отчета.

Ответ №1:

Группировка полей

Без написания SQL-запроса вы можете сгруппировать данные из таблицы.

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

Создание группы

После выбора вы получите диалоговое окно Group Expert, в котором отображаются поля, найденные в вашей таблице данных. Выберите имя поля, которое вы хотите сгруппировать. (Здесь я выбрал «Название проекта»)

Выбор экспертных полей группы

Вы также можете создавать подгруппы в этом поле, группы будут классифицироваться как группа A, Группа B.

Теперь вы можете автоматически находить групповые поля, добавленные в ваш crystal report! Группировка выполнена!

Подсчет полей

Чтобы подсчитать количество записей или полей в отчете, вам необходимо добавить новые «Текущие итоговые поля»

Добавьте новое поле подсчета

Добавьте поле, которое вы хотите подсчитать.

После добавления поля Измените «Тип сводки» на Count и нажмите OK.

Добавление поля подсчета

Добавьте это итоговое поле в свой отчет в той области, где вам нужно (желательно использовать нижний колонтитул группы).

Теперь найдите, что имя вашего поля сгруппировано и подсчитано без написания какого-либо SQL-запроса.

Надеюсь, это поможет вам, оставляйте комментарии, если таковые имеются!

Комментарии:

1. По некоторым причинам я не могу добавить Group Expert, как показано на первом изображении. Мой показывает только опцию обновления. Мне пришлось с самого начала использовать стандартный мастер создания отчетов, чтобы создать два групповых поля: (

Ответ №2:

В crystal reports добавьте группу по полю ‘name’ и вставьте туда сводку по любому полю из detail, изменив функцию summary на ‘count’.

Ответ №3:

Добавьте поле группы в crystal; в этом примере в поле name.

Вставьте сведения в нижний колонтитул группы.

Вставьте функцию подсчета в нижний колонтитул группы, рассчитывая уникальные идентификаторы записи. Также можно использовать отдельное количество, например, если у вас есть несколько вхождений с одним и тем же именем.

Ответ №4:

Для оптимальной производительности вам действительно следует использовать GROUP BY на стороне сервера.
Создайте представление, которое передает данные в ваш Crystal Report.

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

Это дизайнерское решение, но оно экономит много времени и клиентскую обработку в долгосрочной перспективе.

Я обычно сначала разрабатываю представление (предложение WHERE, предложение GROUP BY, функции DB в SELECT)
, а затем отчет Crystal после того, как я подготовил данные на стороне базы данных.

Мой совет — начинать с конца.

Ответ №5:

Если возможно, создайте представление базы данных, которое группирует набор данных, а затем используйте это представление в отчете crystal. Это самая простая и наиболее читаемая реализация того, чего вы пытаетесь достичь в отчете.