Execute: ITable;
Метод Execute осуществляет создание таблицы и загрузку в нее данных.
При выполнении метода в соответствии с информацией, указанной в свойстве ITableCreator.ObjectCreateInfo, в репозитории будет создана таблица. Также в базе данных, указанной в свойстве ITableCreator.Database, будет создана соответствующая физическая таблица. Структура таблицы будет определена автоматически и будет соответствовать структуре источника данных, указанного в свойстве ITableCreator.Source. После создания таблицы в нее из источника данных будут загружены данные.
Для выполнения примера в репозитории предполагается наличие базы данных с идентификатором DB и папки с идентификатором FTable. В файловой системе предполагается наличие файла «c:\result.txt» с данными.
В примере используется пользовательский класс Converter. Реализация класса приведена в примере для IValueConverter.Convert.
Добавьте ссылки на системные сборки: Cubes, Dal, Db, Dt, MathFin, Metabase.
Фрагмент файла «c:\result.txt»
Sub UserProc;
Var
MB: IMetabase;
Db: IDatabase;
CrInfo: IMetabaseObjectCreateInfo;
TextProvider: IDtTextProvider;
Fields: IDtFieldDefinitions;
TCreator: ITableCreator;
Conv: Converter;
TmpTable: ITable;
Begin
// Получаем текущий репозиторий
MB := MetabaseClass.Active;
// Создаем источник данных для таблицы
TextProvider := New DtTextProvider.Create;
// Указываем файл, из которого будут загружены данные
TextProvider.File := "c:\result.txt";
// Указываем строку с заголовками
TextProvider.HeaderRow := 1;
// Указываем символ, разделяющий поля
TextProvider.DelimitedColumnDelimiter := ";";
// Задаем формат дат в файле
TextProvider.StringDataFormat.DateFormat := "ГГГГ";
// Получаем поля из файла-источника
Fields := TextProvider.Fields;
// Указываем тип данных полей
Fields.Item(0).DataType := DbDataType.String;
Fields.Item(1).DataType := DbDataType.String;
Fields.Item(2).DataType := DbDataType.String;
Fields.Item(3).DataType := DbDataType.DateTime;
Fields.Item(4).DataType := DbDataType.Float;
// Создаем объект, предназначенный для создания полей
TCreator := New TableCreator.Create;
// Указываем источник данных для создаваемой таблицы
TCreator.Source := TextProvider;
// Создаем информацию о создаваемой таблице
CrInfo := MB.CreateCreateInfo;
// Указываем папку, в которой будет создана таблица
CrInfo.Parent := MB.ItemById("FTable");
// Указываем информацию о создаваемой таблице
TCreator.ObjectCreateInfo := CrInfo;
// Получаем базу данных
Db := MB.ItemById("DB").Bind As IDatabase;
// Указываем базу данных, в которой будут храниться данные таблицы
TCreator.Database := Db;
// Указываем строку в источнике данных,
// начиная с которой будут загружаться данные
TCreator.DataRow := 0;
// Указываем количество строк, которое нужно загрузить
TCreator.RowCount := 100;
// Указываем, что пустые строки будут пропущены
TCreator.SkipEmptyRows := True;
// Создаем преобразователь значений
Conv := New Converter.Create;
// Указываем, что значения поля «Value» должны быть преобразованы
TCreator.AddConverter("Value", Conv);
// Создаем таблицу и загружаем в неё данные
TmpTable := TCreator.Execute;
// Сохраняем созданную таблицу
(TmpTable As IMetabaseObject).Save;
End Sub UserProc;
После выполнения примера в папке FTable будет создана таблица. Структура таблицы будет сформирована автоматически на основании данных из файла «c:\result.txt». В таблицу будут загружены первые сто строк данных, пустые строки будут пропускаться. Значения, загружаемые из поля Value, будут округлены.
См. также: