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

Удаление нулевых полей в FastReport

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

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

Проблема Вы заполняете данные из SQL-запроса в MasterData и хотите отобразить только не нулевые значения. Например, у вас есть три описания и соответствующие им значения:

[DATA."DESC1"] DESCRIPTION1 [DATA."VALUE1"] 100
[DATA."DESC2"] DESCRIPTION2 [DATA."VALUE2"] 0
[DATA."DESC3"] DESCRIPTION3 [DATA."VALUE3"] 50

Вы хотите отобразить в отчете:

DESCRIPTION1 100
DESCRIPTION3 50

Но вместо этого получаете:

DESCRIPTION1 100

DESCRIPTION3 50

Вы не хотите видеть пустое поле, и вам нужно сдвинуть третье поле на второе место, потому что второе значение равно нулю. Конечно, в вашем SQL-запросе может быть намного больше полей со значениями.

Решение Есть несколько способов решить эту проблему в FastReport. Один из них - использовать событие OnBeforePrint для организации своей логики. Вот пример кода на Object Pascal (Delphi), который демонстрирует, как это сделать:

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
var
   top: Extended;
begin
   top := 0;
   // TfrxMemoView 1
   if (<DATA."VALUE1"> = 0) then begin
      Memo1.Visible := False;
      end
   else begin
      Memo1.Visible := True;
      Memo1.SetBounds(Memo1.Left, top, Memo1.Width, Memo1.Height);
      top := top + Memo1.Height;
   end;
   // TfrxMemoView 2
   Memo2.SetBounds(Memo2.Left, top, Memo2.Width, Memo2.Height);
   top := top + Memo2.Height;
   // TfrxMemoView 3
   if (<DATA."VALUE3"> = 0) then begin
      Memo3.Visible := False;
      end
   else begin
      Memo3.Visible := True;
      Memo3.SetBounds(Memo3.Left, top, Memo3.Width, Memo3.Height);
   end;
end;

В этом примере мы проверяем каждое значение на нуль и делаем соответствующее поле невидимым, если значение равно нулю. Остальные поля сдвигаются, чтобы заполнить пустое пространство.

Вариант решения Если вам не подходит предыдущее решение, вы можете изменить свой SQL-запрос, чтобы возвращать значения в виде нескольких строк вместо нескольких столбцов. Это упростит фильтрацию пустых значений в вашем datasets перед запуском отчета.

Пример кода на Object Pascal (Delphi) для альтернативного решения

procedure PrepareData(Sender: TObject);
begin
   // Измените свой SQL-запрос, чтобы он возвращал значения в виде нескольких строк
   // Например:
   select 'Name' as Desc, Name as Value
   from MyTable
   where Id = X
   union
   select 'Surname' as Desc, Surname as Value
   from MyTable
   where Id = X
   union
   select 'Address' as Desc, Address as Value
   from MyTable
   where Id = X
   ...
end;

Заключение В этом руководстве мы рассмотрели проблему отображения нулевых значений в FastReport и предложили два решения: использование события OnBeforePrint для организации своей логики и изменение SQL-запроса, чтобы возвращать значения в виде нескольких строк вместо нескольких столбцов. Вы можете выбрать наиболее подходящий для вас вариант в зависимости от ваших конкретных требований.

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

В руководстве рассматривается проблема отображения нулевых значений в FastReport и предлагаются способы удаления нулевых полей и сдвига других полей для заполнения пустого пространства.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-01-28 07:07:30/0.0033760070800781/0