Удаление записей в наборе данных FastReport

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Buddy
Постоянный обитатель
Сообщения: 119
Зарегистрирован: 02 июн 2016, 15:18
Откуда: Галактика СПб

Удаление записей в наборе данных FastReport

Сообщение Buddy »

Есть ли возможность удалить строки из датасета уже в самом Фастрепорте (а не при создании потока)?
Т.е. хотелось бы при создании отчета в событии отчета OnBeforePrint прогнать цикл по датасету и удалить по некоторым критериям ненужные записи. Возможно ли это средствами FastReport?
Поток данных менять нельзя, т.к. с ним связан стандартный отчет, в котором должны быть все записи.
spark
Местный житель
Сообщения: 476
Зарегистрирован: 19 окт 2005, 13:38
Контактная информация:

Re: Удаление записей в наборе данных FastReport

Сообщение spark »

Buddy писал(а):Есть ли возможность удалить строки из датасета уже в самом Фастрепорте (а не при создании потока)?
Т.е. хотелось бы при создании отчета в событии отчета OnBeforePrint прогнать цикл по датасету и удалить по некоторым критериям ненужные записи. Возможно ли это средствами FastReport?
Поток данных менять нельзя, т.к. с ним связан стандартный отчет, в котором должны быть все записи.
Не знаю на счет удаления, но можно же просто не выводить ненужные записи.
Buddy
Постоянный обитатель
Сообщения: 119
Зарегистрирован: 02 июн 2016, 15:18
Откуда: Галактика СПб

Re: Удаление записей в наборе данных FastReport

Сообщение Buddy »

Это как, например?
spark
Местный житель
Сообщения: 476
Зарегистрирован: 19 окт 2005, 13:38
Контактная информация:

Re: Удаление записей в наборе данных FastReport

Сообщение spark »

Buddy писал(а):Это как, например?
Вот так. На событии перед печатью строки:

Код: Выделить всё

procedure DetailData1OnBeforePrint(Sender: TfrxComponent);
begin
  if <TEMPSP."CODEMC"> = 'DWS0004' then
       detaildata1.visible:=false
  else
       detaildata1.visible:=true                                                                 
end;
spark
Местный житель
Сообщения: 476
Зарегистрирован: 19 окт 2005, 13:38
Контактная информация:

Re: Удаление записей в наборе данных FastReport

Сообщение spark »

Причем даже итоги по суммам у меня меняются в зависимости от количества печатающихся строк.
Buddy
Постоянный обитатель
Сообщения: 119
Зарегистрирован: 02 июн 2016, 15:18
Откуда: Галактика СПб

Re: Удаление записей в наборе данных FastReport

Сообщение Buddy »

Хм, не знал про такой прием, спасибо.
Но у меня ситуация немного сложнее - нужно убрать повторяющиеся записи, т.е. стоя на очередной записи, нужно сравнивать значения в ней со значениями в предыдущей записи.
spark
Местный житель
Сообщения: 476
Зарегистрирован: 19 окт 2005, 13:38
Контактная информация:

Re: Удаление записей в наборе данных FastReport

Сообщение spark »

Buddy писал(а):Хм, не знал про такой прием, спасибо.
Но у меня ситуация немного сложнее - нужно убрать повторяющиеся записи, т.е. стоя на очередной записи, нужно сравнивать значения в ней со значениями в предыдущей записи.
Сохраняйте проверяемые значения в переменные и с ними сравнивайте.
spark
Местный житель
Сообщения: 476
Зарегистрирован: 19 окт 2005, 13:38
Контактная информация:

Re: Удаление записей в наборе данных FastReport

Сообщение spark »

Buddy писал(а):Есть ли возможность удалить строки из датасета уже в самом Фастрепорте (а не при создании потока)?
Т.е. хотелось бы при создании отчета в событии отчета OnBeforePrint прогнать цикл по датасету и удалить по некоторым критериям ненужные записи. Возможно ли это средствами FastReport?
Поток данных менять нельзя, т.к. с ним связан стандартный отчет, в котором должны быть все записи.
а нельзя на этапе подготовки данных добавить признак печатаемости строки для этого отчета? Чтобы в потоке сразу был признак необходимости печати именно этой строки.
Так как этот признак будет проверяться только в нужном отчете, это не повлияет на формирование других отчетов, где нужны все данные.
Или к формированию потока у вас нет доступа?
Buddy
Постоянный обитатель
Сообщения: 119
Зарегистрирован: 02 июн 2016, 15:18
Откуда: Галактика СПб

Re: Удаление записей в наборе данных FastReport

Сообщение Buddy »

Я делаю клон стандартного отчета. Теоретически я мог бы влезть в формирование потока, но уж очень не хочется.
Попробую ваш вариант с переменными.
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Удаление записей в наборе данных FastReport

Сообщение Den »

Buddy писал(а):Хм, не знал про такой прием, спасибо.
Но у меня ситуация немного сложнее - нужно убрать повторяющиеся записи, т.е. стоя на очередной записи, нужно сравнивать значения в ней со значениями в предыдущей записи.
Ну это если уверены, что только в предыдущей могут быть повторяющиеся значения, то да - как Spark предложил. А если не только в предыдущей, то в какой то массив придется сохранять
"что было во всех предыщущих записях датасета". Вроде массивы тоже были в FR (могу ошибаться)
Buddy
Постоянный обитатель
Сообщения: 119
Зарегистрирован: 02 июн 2016, 15:18
Откуда: Галактика СПб

Re: Удаление записей в наборе данных FastReport

Сообщение Buddy »

spark, Den, решение с

Код: Выделить всё

detaildata1.visible:=false
отлично подошло, спасибо.
Теоретически все же было бы интересно, можно ли редактировать датасет, но это не срочно (ведь и так решение найдено), да и спрашивать, наверное, лучше на форуме Фастрепорта.
Ответить