ITableCreator.Execute

Синтаксис

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, будут округлены.

См. также:

ITableCreator