![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
не работает onFilterRecord
alex-ran © (2002-06-07 12:20:00)Доброго всем времени суток.
В моей таблице используются подстановочные поля. И если я в качестве условия фильтра использую такое поле то всегда возвращается пустой набор.
Если использую обычное поле (fkData) то все нормально - фильтр работает. Например (поле "femaly" типа fkData, поле "telephon" типа fkLookup):
Accept:=DataSet["femaly"]="Моя фамилия" - работает
Accept:=DataSet["femaly"]="Мой телефон" - не работает
Уважаемые мастера, не подскажите в чем дело?
Или поля подстановки вообще нельзя использовать?
Nikolay M. (2002-06-07 12:37:00) [1]2
> kaif © (07.06.02 12:33)
опередил на 2 минуты :))
Nikolay M. (2002-06-07 12:35:00) [2]В принципе логично, что сначала решается вопрос, удовлетворяет ли запись наложенным фильтрам и только потом (если запись проходит фильтры) вычисляются значения Lookup и Calculated полей. Я с этим тоже столкнуля при Calculated-полях, поэтому мне было проще: я брал значение не Query1MY_CALC_FIELD.AsInteger, а значение функции, которая считала вычисляла значение этого поля в OnCalcFields. Твой выход из ситуации - завести побочный запрос, таблицу или вообще динамический массив в памяти и по OnFilterRecord искать в них по первичному ключу соответствующее значение твоего Lookup-поля.
Возможно, есть более красивые варианты, но это первое. что приходит в голову, а если нормально организуешь подключаемую таблицу в виде динамического массива (отсортируешь по ID, например, для ускорения поиска) то все будет работать достаточно быстро.
kaif (2002-06-07 12:33:00) [3]Боюсь, что нельзя использовать Lookup поля для фильтрации. Я даже не пробовал никогда. Мне кажется, что сначала по логике вещей нужно получить данные в DataSet, а уже потом разрешать ссылки. А OnFilterRecord заведует именно получением данных в набор. Следовательно на этой стадии просмотр lookup должен быть невозможен, так как еще нет данных о KeyValue для заглядывания в lookup и мне тут видится логическое противоречие... Но может, я и ошибаюсь.
Попытайся вместо Lookup использовать вычисляемое поле (fkCalculated) и руками сделай в OnCalcFields "заглядывание" в lookup таблицу. Это,возможно, сработает.
alex-ran (2002-06-07 12:27:00) [4]опечатался :) вторая строка кода
Accept:=DataSet["telephon"]="Мой телефон" - не работает