Страница 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, решение с
отлично подошло, спасибо.
Теоретически все же было бы интересно, можно ли редактировать датасет, но это не срочно (ведь и так решение найдено), да и спрашивать, наверное, лучше на форуме Фастрепорта.