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

Создание сложных отчетов без базы данных в Fast Reports

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

Fast Reports — это мощный инструмент для создания отчетов в Delphi, однако пользователи часто испытывают трудности при работе с отчетами, не связанными с базой данных. В этом материале мы рассмотрим, как создавать сложные отчеты без базы данных в Fast Reports, используя пример отчета о серийных портах и USB-устройствах.

Использование встроенных таблиц или SQL-серверов

Одним из способов подготовки данных для отчета является использование встроенных таблиц или SQL-серверов. Хотя это может показаться излишним для отчета о системной информации, списке серийных портов и USB-устройств, а также сводной информации, встроенные таблицы или SQL-серверы могут упростить процесс подготовки данных.

Например, вы можете использовать компоненты встроенных таблиц, такие как TkbmMemTable или TdxMemTable, чтобы создать в памяти таблицу данных для отчета. После этого вы можете связать эту встроенную таблицу с компонентом TfrDataSet в Fast Reports и заполнить таблицу данными перед запуском отчета.

Использование переменных отчета

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

После определения переменных вы можете заполнить их данными в коде Delphi и использовать в отчете. Например, чтобы заполнить переменную с именем MyVariable значением 'This is a new value!', вы можете использовать следующий код:

procedure TForm1.frxReport1GetValue(const VarName: string; var Value: Variant);
begin
  if VarName = 'MyVariable' then
    Value := 'This is a new value!';
end;

Доступ к компонентам отчета из кода Delphi

Еще один способ работы с данными в отчете —直接访问报表组件。您可以使用TfrxReport.FindObject方法在代码中查找报表组件,然后通过强制转换访问组件实例。例如,要修改名为Memo1TfrxMemoView组件的文本,您可以使用以下代码:

var
  Component: TfrxComponent;
begin
  Component := frxReport1.FindObject('Memo1');

  if Component is TfrxMemoView then
    TfrxMemoView(Component).Memo.Text := 'New text';
end;

Пример отчета о серийных портах и USB-устройствах

Теперь, когда мы рассмотрели различные подходы к созданию отчетов без базы данных в Fast Reports, давайте создадим отчет о серийных портах и USB-устройствах, используя переменные отчета и доступ к компонентам отчета из кода Delphi.

  1. Создайте новый отчет в Fast Reports и добавьте четыре табличных компонента (TfrxTableView) для отображения списков серийных портов и USB-устройств, а также один мемо-компонент (TfrxMemoView) для сводной информации.
  2. Определите переменные отчета для хранения системной информации, такой как операционная система, и заполните их данными в коде Delphi.
  3. Используйте TfrxReport.FindObject для доступа к компонентам отчета из кода Delphi и заполните табличные компоненты данными о серийных портах и USB-устройствах.
  4. Заполните мемо-компонент сводной информацией, используя переменные отчета и данные из табличных компонентов.

Пример кода для заполнения данных в отчете:

procedure TForm1.FillReportData;
var
  Component: TfrxComponent;
  i: Integer;
begin
  // Заполнение переменных отчета данными
  frxReport1.Variables['OSInfo'] := 'Windows ' + TPlatform.Version;
  // Доступ к компонентам отчета и заполнение данными
  Component := frxReport1.FindObject('tblSerialPorts');
  if Component is TfrxTableView then
  begin
    with TfrxTableView(Component) do
    begin
      ClearData;
      for i := 0 to TSerial.Ports.Count - 1 do
      begin
        AddNew;
        Fields['PortName'].Value := TSerial.Ports[i].Name;
        Fields['PortDesc'].Value := TSerial.Ports[i].Description;
      end;
    end;
  end;

  Component := frxReport1.FindObject('tblUSBDevices');
  if Component is TfrxTableView then
  begin
    with TfrxTableView(Component) do
    begin
      ClearData;
      for i := 0 to TUSB Devices.Count - 1 do
      begin
        AddNew;
        Fields['DeviceName'].Value := TUSB Devices[i].Name;
        Fields['DeviceDesc'].Value := TUSB Devices[i].Description;
      end;
    end;
  end;

  Component := frxReport1.FindObject('MemoSummary');
  if Component is TfrxMemoView then
    TfrxMemoView(Component).Memo.Text := 'Summary information based on variables and table data';
end;

Используя эти подходы, вы можете создавать сложные отчеты без базы данных в Fast Reports, даже если данные не подходят для табличного представления. Не бойтесь экспериментировать с различными методами и комбинировать их, чтобы добиться наилучших результатов.

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

Эта статья описывает, как создавать сложные отчеты в Fast Reports без использования базы данных, с помощью встроенных таблиц, переменных отчета и доступа к компонентам отчета из кода Delphi.


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

Получайте свежие новости и обновления по 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 23:24:42/0.0036060810089111/0