Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Решение проблемы повторяющихся данных в FastReport

Delphi , Базы данных , Отчеты

Заголовок статьи: при отображении данных в формате 3x3 сетки

Введение

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

Описание проблемы

Пользователь хочет отобразить данные из таблицы (столбец: ID) в FastReport в формате 3x3 сетки, как показано на рисунке:

3x3 сетка

При этом пользователь использует подотчет на главной странице внутри полосы MasterData1. В подотчете полоса MasterData имеет следующие свойства: Columns = 3, RowCount = 9. Однако, при просмотре отчета данные повторяются в каждом блоке 3x3 на странице, как показано на рисунке:

Повторяющиеся данные

Пользователь использует frxDBDataSet1 для отображения данных, и ожидает, что при наличии 28 записей в таблице будет отображено четыре блока 3x3 на странице с 27 идентификаторами. Но вместо этого, отображаются первые 9 идентификаторов в каждом блоке 3x3.

Решение проблемы

Для решения данной проблемы можно воспользоваться следующим подходом:

  1. Добавьте три подотчета на главную страницу, расположенных друг под другом. Каждый подотчет будет отвечать за отображение одного блока 3x3.
  2. Создайте три отдельных набора данных (frxDBDataSet1, frxDBDataSet2, frxDBDataSet3) и свяжите их с соответствующими подотчетами.
  3. Настройте фильтр для каждого набора данных, чтобы отображать нужный диапазон записей. Например, для frxDBDataSet1 можно установить фильтр 'ID >= 1 AND ID <= 9', для frxDBDataSet2 - 'ID >= 10 AND ID <= 18', и так далее.
  4. Добавьте полосу заголовка между каждым подотчетом и установите для нее свойство StartNewPage в значение True. Это гарантирует, что каждый блок 3x3 будет отображаться на новой странице.
  5. При необходимости, отрегулируйте расположение полос на главной странице, чтобы они занимали нужное количество места на странице.

Пример кода для настройки фильтра набора данных в событии OnBeforePrint подотчета:

procedure Subreport1OnBeforePrint(Sender: TfrxComponent);
begin
  TfrxDBDataSet(Report.GetDataset('frxDBDataSet1')).Dataset.Filter := 'ID >= 1 AND ID <= 9';
  TfrxDBDataSet(Report.GetDataset('frxDBDataSet1')).Dataset.Filtered := true;
end;

procedure Subreport2OnBeforePrint(Sender: TfrxComponent);
begin
  TfrxDBDataSet(Report.GetDataset('frxDBDataSet2')).Dataset.Filter := 'ID >= 10 AND ID <= 18';
  TfrxDBDataSet(Report.GetDataset('frxDBDataSet2')).Dataset.Filtered := true;
end;

procedure Subreport3OnBeforePrint(Sender: TfrxComponent);
begin
  TfrxDBDataSet(Report.GetDataset('frxDBDataSet3')).Dataset.Filter := 'ID >= 19 AND ID <= 27';
  TfrxDBDataSet(Report.GetDataset('frxDBDataSet3')).Dataset.Filtered := true;
end;

Заключение

В данной статье мы рассмотрели проблему повторяющихся данных при отображении данных в формате 3x3 сетки в FastReport и предложили решение, основанное на использовании подотчетов и динамической настройке диапазона данных. Используя данный подход, вы сможете отображать данные из таблицы в нужном формате без повторений.

Создано по материалам из источника по ссылке.

Статья описывает решение проблемы повторяющихся данных в FastReport при отображении данных в формате 3x3 сетки с использованием подотчетов и динамической настройки диапазона данных.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Отчеты ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-15 22:44:26/0.0035300254821777/0