Советы по Delphi




DBASE - Индексы выражений - часть 5


/p>

Код, приведенный ниже, использует то же активное выражение индекса, но используемый фильтр поля LastName правильно отфильтрует данные, и не вызовет ошибки:

beginwith Table1 do beginSetRangeStart;FieldByName('LastName').AsString := 'S';SetRangeEnd;FieldByName('LastName').AsString := 'Szzz';ApplyRange;end;end;

И, так же, как и в случае основанного на индексах поиска, успех применения фильтра целиком и полностью зависит от самого индексного выражения. Использование методов SetRangeStart и SetRangeEnd в приведенном примере работало бы с индексом, построенным на основе простой конкантенации двух полей, имеющих тип String. Но если вместо этого выражение было основано на одном или нескольких полях с использованием функции IIF(), тот же самый процесс фильтрации потерпел бы неудачу (хотя и без ошибки).

Несколько полезных советов при создании индексных выражений dBASE

Вот некоторые "удобные" индексные выражения dBASE. Некоторые интуитивно-понятные в достижении своей цели, другие немного "заумные".

Сортировка поля типа Character символов по-возрастающей, поля Date - по-убывающей

С полем типа Character и именем Name, и полем типа Date и именем OrdDate:

Name + STR(OrdDate - {12/31/3099}, 10, 0) Сортировка поля типа Character по-возрастающей и поля типа Numeric (или Float) по-убывающей

C полем типа Character и именем Company, и полем типа Numeric и именем Amount (поле Amount имеет длину 9 цифр с двумя цифрами после десятичной запятой):

Company + STR(Amount - 999999.99, 9, 2) Сортировка логического поля

Для того, чтобы записи со значением True располагались впереди записей со значением False в логическом поле с именем Paid, выполните следующее:

IIF(Paid, "A", "Z") Два поля с типом Numeric (или Float)

Предположим, у нас имеется два поля типа Numeric с пятью и двумя десятичными разрядами, первое поле с именем Price, второе - Quantity:

STR(Price, 5, 2) + STR(Quantity, 5, 2) Сортировка одного из двух полей в зависимости от выполнения логического условия

Сортировка имен месяцев в поле, имеющим тип Character




Содержание  Назад  Вперед