Создание FR-отчета Назад В начало Вперед

Для содания FR-отчета сначала необходимо объявить поток данных.

Организация потока данных изложена в разделах:

Созданный поток данных связывается с системой FastReport процедурой RunFReport.

Начиная с Атлантис 5.3.07 для создания FR-отчета можно воспользоваться автоматически создаваемым потоком данных: при активизации табличного редактора в инструментальной панели появляется кнопка [FR]. При нажатии на нее создается поток данных, соответствующий текущему табличному редактору, и запускается дизайнер FastReport.

Имея поток данных можно проектировать форму отчета. Проектирование формы выполняется средствами графического дизайнера FastReport. Элементы типа table и dataset в словаре данных дизайнера видны как таблицы в закладках "Данные из БД" и "Источники данных для бэндов". Элементы потока "нулевого уровня" видны в закладке "Переменные".

При проектировании отчетов типа master-detail-subdetail, master-detail-detail и т.п. поток данных должен иметь соответствующую структуру. Вложенность элементов потока определяется подцепками в логической таблице. Вложенность элементов потока в описании потока используется исключительно для повышения читаемости программы.

Вызов дизайнера FastReport см. "Вызов генератора отчётов FastReport. ".

Подробнее о проектировании отчетов см. документацию по FastReport.

Визуализация процесса вывода FR-отчета запускается функцией StartNewVisual. Для этого необходимо вызвать функцию StartNewVisual из обработчика событий потока данных, который использует FastReport. При этом окно визуализации процесса привязывается к окну дизайнера FastReport, т.е. окно дизайнера FastReport становится для него родительским.

Для прерывания процесса прохода по потоку данных добавлены функции BreakProcess и AbortProcess, которые должны вызываться внутри обработчиков cmPreProcess, cmOnProcess, cmPostProcess. Данные функции не прерывают выполнения команд в обработчиках, они только устанавливают внутренние флаги, которые определяют будет ли дальше вызываться cmOnProcess, т.е. после BreakProcess и AbortProcess можно писать другие операторы. Отличие BreakProcess от AbortProcess в том, что после BreakProcess будет вызываться событие cmPostProcess, а после AbortProcess - нет.

Пример

Пример потока данных с визуализацией.

interface DSSample;
// ------------------------------
  create view as select * from x$files;
  var
	i: integer;
	cnt: integer;
	j: integer;
// ------------------------------
  browse SampleBrowse;
   fields
	xf$name;
	xf$loc;
	xf$title;
  end;
// ------------------------------
  datastream SampleStream
  (
	table x$files
	(
		[XFN] xf$name;
		[XFL] xf$loc;
		[XFT] xf$title;
	);
	dataset DS
	(
		[i] i;
	);
	dataset DS2
	(
		[j] j;
	);
  )
  handleEvent table x$files
	cmPreProcess:
	{
	cnt := 0;
	StartNewVisual(vtRotateVisual,
				vfTimer+vfBreak+vfConfirm, 'TEST', 0);
}
	cmOnProcess:
	{
	cnt := cnt + 1;
	delay(100);
	if (not NextVisual) {
		BreakProcess;
}
}
	cmPostProcess:
	{
	StopVisual('', 0);
	Message('table test '+cnt);
}
  end;
  handleEvent dataset DS
	cmPreProcess:
	{
	i := 0;
	StartNewVisual(vtRotateVisual,
		vfTimer+vfBreak+vfConfirm, 'DATASET-TEST', 0);
}
	cmOnProcess:
	{
	i := i + 1;
	if (i <= 100) then
		ContinueDataset;
	delay(100);
	if (not NextVisual) {
		BreakProcess;
}
}
	cmPostProcess:
	{
	StopVisual('', 0);
	Message('test '+i);
}
  end;
  handleEvent dataset DS2
	cmPreProcess:
	{
	j := 0;
}
	cmOnProcess:
	{
	j := j + 1;
	if (j <= 20) then
		ContinueDataset;
	if (j = 15) then
		AbortProcess;
}
	cmPostProcess:
	{
	message('test '+j);
}
  end;
  end;
// ------------------------------
  handleEvent
	cmInit :
	{
		RunFReport(SampleStream, '', True);
}
  end;
end.

Версия

Автоматическое создание потока данных для табличного редактора и переход в дизайнер FastReport доступно начиная с Атлантис 5.3.07.

Управления визуализацией вывода FR-отчета доступно начиная с Атлантис 5.1.26.

Атлантис 5.1.2x.