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

Пропуск некоторых записей таблицы в Fast Report при генерации отчета в Delphi 16 с Fast Reports 4.1

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

При работе с большими таблицами из базы данных в отчетах Fast Report может возникнуть необходимость пропускать некоторые записи таблицы во время генерации отчета. В этом материале мы рассмотрим, как это можно сделать в среде Delphi 16 с Fast Reports 4.1.

Введение

Допустим, у нас есть большая таблица в базе данных с 1000 записями, и мы хотим сгенерировать отчет, в котором каждая запись будет занимать свою страницу. В таком случае отчет из 1000 страниц будет неудобным для работы, и нам нужно как-то указать Fast Report, какие записи таблицы использовать при подготовке отчета.

Использование DBGrid для выбора записей

Одним из способов выбора записей для отчета является использование DBGrid. Для этого нужно установить свойство DBGrid.Options.dgMultiselect в True и выбрать нужные записи с помощью мыши. Затем выбранные записи можно скопировать в отдельный компонент TClientDataSet (назовем его TempDataSet), после чего установить его в качестве источника данных для отчета (frxDataSet1.DataSet := TempDataSet) и запустить подготовку отчета.

Хотя этот метод работает, он может быть неприемлемым в контексте определенного приложения. В таком случае нам нужно контролировать, какие записи в frxDBDataset1.DataSet должны посещаться при вызове frxReport1.PrepareReport().

Контроль записей в отчете

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

Фильтрация данных

Если источник данных (DataSet) поддерживает фильтрацию, мы можем написать фильтр, подобный SQL, для выбора нужных записей. Например:

MyDataSet.Filter := 'MYCOLUMN in (''a'', ''b'', ''c'')';
MyDataSet.Filtered := True;

Или написать обработчик события OnFilterRecord для включения/исключения записей по определенным условиям.

procedure TMyForm.MyDataSetFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
  Accept := (DataSet.FieldByName('MYFIELD').AsInteger mod 7 = 0) or
            (DataSet.FieldByName('MYOTHERFIELD').AsInteger in MySetOfValues);
end;

Использование событий TFrxDBDataSet

Мы также можем воспользоваться событиями компонента TfrxDBDataSet, который обычно используется для связывания отчета с данными. Например, мы можем написать обработчики событий OnOpen, OnFirst, OnNext, OnCheckEOF для предотвращения включения всех записей в отчет, останавливаясь только на записях, которые нам интересны.

Например, если мы хотим напечатать каждую вторую строку, мы можем написать следующее:

procedure TMyForm.fdsEstPagosNext(Sender: TObject);
begin
  MyDataSet.Next;
  MyDataSet.Next; //перемещаемся не на одну, а на две записи вперед.
end;

Вывод

В данной статье мы рассмотрели, как пропускать некоторые записи таблицы при генерации отчета в Fast Report в Delphi 16 с Fast Reports 4.1. Мы рассмотрели два метода: фильтрацию данных и использование событий TFrxDBDataSet. Выбор метода зависит от конкретной задачи и структуры данных в приложении.

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

В материале описаны способы пропуска некоторых записей таблицы при генерации отчета в Fast Report в Delphi 16 с Fast Reports 4.1, используя фильтрацию данных и события TFrxDBDataSet.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 09:04:09/0.0033960342407227/0