IDtProvider.FilterIf

Синтаксис

FilterIf: IExpression;

Описание

Свойство FilterIf возвращает условие загрузки записей из источника данных.

Комментарии

Для корректной работы условия должно быть задано свойство IDtObject.Metabase.

Пример

Для выполнения примера в файловой системе предполагается наличие файла D:\res_export.txt.

Содержимое файла res_export.txt

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

Sub UserProc;
Var
    Mb: IMetabase;
    TextProvider: IDtTextProvider;
    v: Array;
    i: Integer;
    Errors: IDtErrors;
    Error: IDtError;
Begin
    Mb := MetabaseClass.Active;
    // Создаем объект для импорта из тестового файла
    TextProvider := New DtTextProvider.Create;
    // Указываем импортируемый файл
    TextProvider.File := "D:\res_export.txt";
    // Задаем параметры импорта
    TextProvider.FormatType := DtTextFormatType.Delimited;
    TextProvider.DelimitedColumnDelimiter := ";";
    TextProvider.DelimitedTextQualifier := """";
    TextProvider.Encoding := "WIN";
    // Указываем, что импортируемый файл содержит заголовки
    TextProvider.RangeHasHeader := True;
    // Выполняем чтение полей из импортируемого файла
    TextProvider.FieldsFromFile;
    // Находим поле «Value» и указываем, что оно вещественного типа
    TextProvider.Fields.FindByName("Value").DataType := DbDataType.Float;
    // Задаём репозиторий
    TextProvider.Metabase := Mb;
    // Задаем условие фильтрации
    TextProvider.FilterIf.AsString := "{VALUE} > 2.8";
    // Задаём параметры обработки ошибок
    Errors := TextProvider.FetchErrors;
    Errors.MaxErrors := -1;
    Errors.MaxItems := -1;
    // Открываем источник данных
    TextProvider.Open;
    // Загружаем записи и выводим их в окно консоли
    While Not TextProvider.Eof Do
        TextProvider.Fetch(v);
        For i := 0 To v.Length - 1 Do
            Debug.Write(v[i] + " ");
        End For;
        Debug.WriteLine("");
    End While;
    // Выводим информацию об импорте в окно консоли
    Debug.WriteLine("Количество прочитанных строк (без учета фильтра): " + TextProvider.ReadingRowsTotalCount.ToString);
    Debug.WriteLine("Количество прочитанных строк (с учетом фильтра): " + TextProvider.ReadingRowsCount.ToString);
    // Выводим информацию об ошибках импорта
    For i := 0 To Errors.Count - 1 Do
        Error := Errors.Item(i);
        Debug.WriteLine("Номер строки с ошибкой: " + Error.Row.ToString);
        Debug.WriteLine("Ошибка: " + Error.Message)
    End For;
    // Закрываем источник данных
    TextProvider.Close;
End Sub UserProc;

В результате выполнения примера будет настроен импорт из файла D:\res_export.txt. Импортироваться будут только строки, в которых значение атрибута Value больше значения 2,8. Информация об импорте и ошибках импорта будет выведена в окно консоли.

См. также:

IDtProvider