Master-detal - ручками

отредактировано 03:33 Раздел: FastReport 4.0
Доброго дня...

Простой отчет по Мастер-Деталь. Две таблицы (использую FIBPlus) но к ним нет DataSource и поэтому связку Master-Detal на уровне Delphi не удается сделать, да и нет особого желания, так же как не хочется через фильтр делать.

Так задача создать "фильтрацию" Деталь бенда в зависимости от Мастер бенда на уровне самого отчета...

Добавил код в событие Мастер бенда на onBeforePrint
Repeat                                      
 While ([FRD1."ID_GR_NUM"]<>[FRD2."ID_GROUP"]) and (not DetailData1.DataSet.EOF) do
   DetailData1.DataSet.Next;
  If DetailData1.DataSet.EOF then 
   begin
    MasterData1.DataSet.Next;
    DetailData1.DataSet.First;
   end;              
 Until ([FRD1."ID_GR_NUM"]=[FRD2."ID_GROUP"]) or (MasterData1.DataSet.EOF);
и код в событие onBeforePrint для Деталь бенда
While ([FRD1."ID_GR_NUM"]<>[FRD2."ID_GROUP"]) and (not DetailData1.DataSet.EOF) do
   DetailData1.DataSet.Next;
Все работает, но в каждой группе остается последняя запись на которой появился признак EOF в деталь бенде...
как от этого избавиться?

Комментарии

  • gpigpi
    отредактировано 03:33
    написал:
    Две таблицы (использую FIBPlus) но к ним нет DataSource и поэтому связку Master-Detal на уровне Delphi не удается сделать, да и нет особого желания, так же как не хочется через фильтр делать.
    В данном случае реализация Master-Detail на уровне Delphi будет более эффективной, а для реализации этого в скрипте нужно в обработчике MasterData переходить на первую запись подчинённого датасета, а при выводе DetailData скрывать этот бэнд, если данные не являются подчинёнными для текущей записи Master датасета.Но такой подход будет неэффективным по скорости

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.