Печать не всех записей датасета

отредактировано 13:55 Раздел: FastReport 3.0
Здравствуйте!

Как лучше выполнить печать только некоторых записей датасета.
Например, печать всех записей, у которых значение кокого-н. поля равно 0.
Или, на форме есть DBGridEh, надо напечатать все выделенные записи (при MultiSelect=True).

Но надо это сделать не в самом отчете (там есть только банд MasterData), а в коде программы.
При этом нельзя использовать другой, дополнительный, датасет.

Т.е., я догадываюсь, можно как-то наподобие:
DataSet.First;
while not DataSet.Eof do
 begin
  if DataSet.FieldByName('...').Value=0 then
   begin
     frxReport.....
   end;
  DataSet.Next;
 end

Комментарии

  • отредактировано 13:55
    Что мешает наложить фильтр на датасет?
    DataSet.Filter:='FieldName = 0';
    
  • отредактировано 13:55
    Так в том-то и дело, что неизвестно заранее условие фильтрации.
    Его может и не быть в явном виде.
    Может понадобиться напечатать только выбранные записи в DBGrigEh.
    При установленном dgMultiSelect=True выполняется переход к записям так:
    var
     bm : TBookmark;
     
    begin
      for i:=0 to DBGridEh1.SelectedRows.Count-1 do
        begin
          bm:=Pointer(DBGridEh1.SelectedRows[i]);
          DataSet.GotoBookmark(bm);
          // вот тут в идеале надо-бы добавить запись к отчету в банд
        end;
    end;
    
  • отредактировано 13:55
    А вообще, для чего все это?
    Я хочу сделать все универсально.
    Отчеты храняться в отдельных файлах. Но есть еще XML файл Reports.xml, в котором храняться "ссылки" на отчеты в программе. Для каждого отчета указывается его тип (количество печатаемых документов: только текущий, все выбранные и т.д.), настройки (ориентация бумаги и т.д.), поля датасета (при использовании CrossView).
    Так вот, при выборе отчета, где печатаюстя все выбранные документы, если не один не выбран, надо печатать все открытые в датасете, а если какие-то выбраны - то только их.

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

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