Страница 1 из 1

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

Добавлено: 30 янв 2020, 18:09
Buddy
Есть ли возможность удалить строки из датасета уже в самом Фастрепорте (а не при создании потока)?
Т.е. хотелось бы при создании отчета в событии отчета OnBeforePrint прогнать цикл по датасету и удалить по некоторым критериям ненужные записи. Возможно ли это средствами FastReport?
Поток данных менять нельзя, т.к. с ним связан стандартный отчет, в котором должны быть все записи.

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

Добавлено: 31 янв 2020, 13:16
spark
Buddy писал(а):Есть ли возможность удалить строки из датасета уже в самом Фастрепорте (а не при создании потока)?
Т.е. хотелось бы при создании отчета в событии отчета OnBeforePrint прогнать цикл по датасету и удалить по некоторым критериям ненужные записи. Возможно ли это средствами FastReport?
Поток данных менять нельзя, т.к. с ним связан стандартный отчет, в котором должны быть все записи.
Не знаю на счет удаления, но можно же просто не выводить ненужные записи.

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

Добавлено: 31 янв 2020, 13:22
Buddy
Это как, например?

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

Добавлено: 31 янв 2020, 13:37
spark
Buddy писал(а):Это как, например?
Вот так. На событии перед печатью строки:

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

procedure DetailData1OnBeforePrint(Sender: TfrxComponent);
begin
  if <TEMPSP."CODEMC"> = 'DWS0004' then
       detaildata1.visible:=false
  else
       detaildata1.visible:=true                                                                 
end;

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

Добавлено: 31 янв 2020, 13:39
spark
Причем даже итоги по суммам у меня меняются в зависимости от количества печатающихся строк.

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

Добавлено: 31 янв 2020, 13:53
Buddy
Хм, не знал про такой прием, спасибо.
Но у меня ситуация немного сложнее - нужно убрать повторяющиеся записи, т.е. стоя на очередной записи, нужно сравнивать значения в ней со значениями в предыдущей записи.

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

Добавлено: 31 янв 2020, 14:13
spark
Buddy писал(а):Хм, не знал про такой прием, спасибо.
Но у меня ситуация немного сложнее - нужно убрать повторяющиеся записи, т.е. стоя на очередной записи, нужно сравнивать значения в ней со значениями в предыдущей записи.
Сохраняйте проверяемые значения в переменные и с ними сравнивайте.

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

Добавлено: 31 янв 2020, 14:37
spark
Buddy писал(а):Есть ли возможность удалить строки из датасета уже в самом Фастрепорте (а не при создании потока)?
Т.е. хотелось бы при создании отчета в событии отчета OnBeforePrint прогнать цикл по датасету и удалить по некоторым критериям ненужные записи. Возможно ли это средствами FastReport?
Поток данных менять нельзя, т.к. с ним связан стандартный отчет, в котором должны быть все записи.
а нельзя на этапе подготовки данных добавить признак печатаемости строки для этого отчета? Чтобы в потоке сразу был признак необходимости печати именно этой строки.
Так как этот признак будет проверяться только в нужном отчете, это не повлияет на формирование других отчетов, где нужны все данные.
Или к формированию потока у вас нет доступа?

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

Добавлено: 31 янв 2020, 14:42
Buddy
Я делаю клон стандартного отчета. Теоретически я мог бы влезть в формирование потока, но уж очень не хочется.
Попробую ваш вариант с переменными.

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

Добавлено: 31 янв 2020, 14:44
Den
Buddy писал(а):Хм, не знал про такой прием, спасибо.
Но у меня ситуация немного сложнее - нужно убрать повторяющиеся записи, т.е. стоя на очередной записи, нужно сравнивать значения в ней со значениями в предыдущей записи.
Ну это если уверены, что только в предыдущей могут быть повторяющиеся значения, то да - как Spark предложил. А если не только в предыдущей, то в какой то массив придется сохранять
"что было во всех предыщущих записях датасета". Вроде массивы тоже были в FR (могу ошибаться)

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

Добавлено: 04 фев 2020, 17:17
Buddy
spark, Den, решение с

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

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