Ниже рассмотрен пример создания и использования формы для экспорта нескольких экспресс-отчетов в один файл формата «XLS».
В первую очередь, необходимо создать форму. Далее следует поместить на нее компоненты Button, Label, EditBox, MetabaseOpenDialog и Memo следующим образом:
Форма должна работать следующим образом: пользователь нажимает кнопку «Экспорт», после это отображается диалог открытия объектов репозитория. В данном диалоге доступен выбор лишь экспресс-отчетов. Если пользователь выбрал один или несколько экспресс-отчетов, то они должны быть экспортированы в файл, указанный в компоненте EditBox, в формате XLS. По умолчанию в компоненте EditBox указан файл C:\ExportReport.xls. Сообщения о ходе экспорта должны выводиться в компонент Memo.
Сначала следует запрограммировать событие OnCreate для формы следующим образом:
Sub BatchExportFormOnCreate(Sender: Object; Args: IEventArgs);
Begin
EditBox1.Text := "C:\ExportReport.xls";
Memo1.Lines.Clear;
End Sub BatchExportFormOnCreate;
Далее следует запрограммировать событие OnClick для компонента Button следующим образом:
Sub Button1OnClick(Sender: Object; Args: IEventArgs);
Var
Filter: IMetabaseDialogClassFilter;
Objects: IMetabaseObjectDescriptorList;
List: IStringList;
Exp: ExAnalyzerExporter;
i, Count: integer;
id: String;
Begin
MetabaseOpenDialog1.MultiSelect := True;
//Создание фильтра для диалога открытия объекта репозитория
Filter := New MetabaseDialogClassFilter.Create;
Filter.Description := "Экспресс-отчеты";
//Определяем тип объектов, которые будут отображаться в диалоге при использовании
//данного фильтра: экспресс - отчет
Filter.ObjectClass := MetabaseObjectClass.KE_CLASS_EXPRESSREPORT;
List := Memo1.Lines;
List.Clear;
MetabaseOpenDialog1.Filters.AddFilter(Filter);
If MetabaseOpenDialog1.Execute(Self) Then
//Данные выражения выполняются, если пользователь выбрал один или более экспресс-отчет
Objects := MetabaseOpenDialog1.Objects;
Count := Objects.Count;
List.Add("Количество отчетов, выбранных для экспорта:" + Count.ToString);
//Начало пакетного экспорта выбранных отчетов
Exp := New ExAnalyzerExporter.Create;
Exp.StartBatchCommand(EditBox1.Text, "XLS");
For i := 0 To Count - 1 Do
id := Objects.Item(i).Id;
Exp.ExAnalyzer := MetabaseClass.Active.ItemById(id).Bind As IEaxAnalyzer;
Exp.ExportToFile("", "XLS");
Memo1.Lines.Add("Отчет '" + Objects.Item(i).Name + "' экспортирован");
End For;
//Окончание пакетного экспорта выбранных отчетов
Exp.FinishBatchCommand;
List.Add("Экспорт отчетов окончен");
End If;
End Sub Button1OnClick;
После компиляции, при запуске форма будет выглядеть следующим образом:
Следует нажать кнопку «Экспорт», будет вызван диалог открытия объекта репозитория. В нем необходимо выбрать экспресс-отчеты для экспорта. После этого, будет произведен их экспорт в файл C:\ExportReport.xls формата XLS. Сообщения о ходе экспорта будут выведены в компонент Memo:
См. также: