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. Информация об импорте и ошибках импорта будет выведена в окно консоли.
См. также: