ITableCreator.Execute

Синтаксис Fore

Execute: ITable;

Синтаксис Fore.NET

Execute(): Prognoz.Platform.Interop.Db.ITable;

Описание

Метод Execute осуществляет создание таблицы и загрузку в нее данных.

Комментарии

При выполнении метода в соответствии с информацией, указанной в свойстве ObjectCreateInfo, в репозитории будет создана таблица. Также в базе данных, указанной в свойстве Database, будет создана соответствующая физическая таблица. Структура таблицы будет определена автоматически и будет соответствовать структуре источника данных, указанного в свойстве Source. После создания таблицы в нее из источника данных будут загружены данные.

Пример Fore

Для выполнения примера в репозитории предполагается наличие базы данных с идентификатором «DB» и папки с идентификатором «FTable». В файловой системе предполагается наличие файла «c:\result.txt» с данными.

В примере используется пользовательский класс Converter. Реализация класса приведена в примере для IValueConverter.Convert.

Добавьте ссылки на системные сборки: Cubes, Dal, Db, Dt, Metabase, MathFin.

Фрагмент файла «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», будут округлены.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Dal;
Imports Prognoz.Platform.Interop.Db;
Imports Prognoz.Platform.Interop.Dt;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    Db: IDatabase;
    CrInfo: IMetabaseObjectCreateInfo;
    TextProvider: IDtTextProvider;
    Fields: IDtFieldDefinitions;
    TCreator: ITableCreator;
    Conv: Converter;
    TmpTable: ITable;
Begin
    // Получаем текущий репозиторий
    MB := Params.Metabase;
    // Создаем источник данных для таблицы
    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.ddtString;
    Fields.Item[1].DataType := DbDataType.ddtString;
    Fields.Item[2].DataType := DbDataType.ddtString;
    Fields.Item[3].DataType := DbDataType.ddtDateTime;
    Fields.Item[4].DataType := DbDataType.ddtFloat;
    // Создаем объект, предназначенный для создания полей
    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;

См. также:

ITableCreator