IDtObject.KeepCalcFields

Синтаксис

KeepCalcFields: Boolean;

Описание

Свойство KeepCalcFields определяет признак сохранения списка вычисляемых полей при смене источника/приёмника данных.

Комментарии

После задания настроек источника/приёмника при вызове метода FieldsFromFile будет заполнена коллекция полей Fields. Также в эту коллекцию могут быть добавлены собственные вычисляемые поля. По умолчанию свойству KeepCalcFields установлено значение False, при этом при смене источника/приёмника список полей в коллекции Fields будет сброшен и загружен в соответствии со структурой нового источника/приёмника. Сбрасываются также и добавленные вычисляемые поля. Если список вычисляемых полей необходимо сохранить, то установите свойству KeepCalcFields значение True.

Пример

Для выполнения примера предполагается наличие двух текстовых файлов 1.txt и 2.txt.

Текст файлов

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

Sub UserProc;
Var
    TextProvider: IDtTextProvider;
    Fields: IDtFieldDefinitions;
    Field: IDtFieldDefinition;
Begin
    // Настройка источника
    TextProvider := New DtTextProvider.Create;
    TextProvider.File := "D:\Work\1.txt";
    TextProvider.Encoding := "WIN";
    TextProvider.DelimitedTextQualifier := '"';
    TextProvider.DelimitedColumnDelimiter := " ";
    TextProvider.RowDelimiter := #13 + #10;
    TextProvider.HeaderRow := 1;
    TextProvider.AutoFillFieldsMode := DtAutoFillFieldsMode.DataRow;
    TextProvider.TypeGuessRows := 5;
    // Загрузка списка полей из источника
    TextProvider.FieldsFromFile;
    TextProvider.Metabase := MetabaseClass.Active;
    Fields := TextProvider.Fields;
    // Добавление вычисляемого поля
    Field := Fields.Add;
    Field.Name := "Calculate";
    Field.DataType := DbDataType.Float;
    Field.Expression.AsString := Fields.Item(2).Name + " * 10";
    // Количество полей до замены файла
    Debug.WriteLine("Поля до замены файла: " + TextProvider.Fields.Count.ToString);
    ShowFields(Fields);
    // Смена файла
    TextProvider.KeepCalcFields := True;
    TextProvider.File := "D:\Work\2.txt";
    // Количество полей после замены файла
    Debug.WriteLine("Поля после замены файла: " + TextProvider.Fields.Count.ToString);
    ShowFields(Fields);
End Sub UserProc;

Sub ShowFields(Fields: IDtFieldDefinitions);
Var
    Field: IDtFieldDefinition;
Begin
    For Each Field In Fields Do
        Debug.Write(Field.Name + ' ');
    End For;
    Debug.WriteLine("");
End Sub ShowFields;

При выполнении примера будет создан источник, импортирующий данные из текстового файла. После задания настроек осуществляется чтение списка полей из файла 1.txt, добавляется одно вычисляемое поле. Затем в качестве источника устанавливается файл 2.txt, при этом список полей загружается из файла заново. Список полей, полученных из первого и второго файла, с учётом вычисляемого поля будет выведен в консоль среды разработки.

См. также:

IDtObject