Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.07.01;
Скачать: [xml.tar.bz2];

Вниз

не работает onFilterRecord   Найти похожие ветки 

 
alex-ran   (2002-06-07 12:20) [0]

Доброго всем времени суток.
В моей таблице используются подстановочные поля. И если я в качестве условия фильтра использую такое поле то всегда возвращается пустой набор.
Если использую обычное поле (fkData) то все нормально - фильтр работает. Например (поле "femaly" типа fkData, поле "telephon" типа fkLookup):
Accept:=DataSet["femaly"]="Моя фамилия" - работает
Accept:=DataSet["femaly"]="Мой телефон" - не работает

Уважаемые мастера, не подскажите в чем дело?
Или поля подстановки вообще нельзя использовать?


 
alex-ran   (2002-06-07 12:27) [1]

опечатался :) вторая строка кода
Accept:=DataSet["telephon"]="Мой телефон" - не работает


 
kaif   (2002-06-07 12:33) [2]

Боюсь, что нельзя использовать Lookup поля для фильтрации. Я даже не пробовал никогда. Мне кажется, что сначала по логике вещей нужно получить данные в DataSet, а уже потом разрешать ссылки. А OnFilterRecord заведует именно получением данных в набор. Следовательно на этой стадии просмотр lookup должен быть невозможен, так как еще нет данных о KeyValue для заглядывания в lookup и мне тут видится логическое противоречие... Но может, я и ошибаюсь.
Попытайся вместо Lookup использовать вычисляемое поле (fkCalculated) и руками сделай в OnCalcFields "заглядывание" в lookup таблицу. Это,возможно, сработает.


 
Nikolay M.   (2002-06-07 12:35) [3]

В принципе логично, что сначала решается вопрос, удовлетворяет ли запись наложенным фильтрам и только потом (если запись проходит фильтры) вычисляются значения Lookup и Calculated полей. Я с этим тоже столкнуля при Calculated-полях, поэтому мне было проще: я брал значение не Query1MY_CALC_FIELD.AsInteger, а значение функции, которая считала вычисляла значение этого поля в OnCalcFields. Твой выход из ситуации - завести побочный запрос, таблицу или вообще динамический массив в памяти и по OnFilterRecord искать в них по первичному ключу соответствующее значение твоего Lookup-поля.
Возможно, есть более красивые варианты, но это первое. что приходит в голову, а если нормально организуешь подключаемую таблицу в виде динамического массива (отсортируешь по ID, например, для ускорения поиска) то все будет работать достаточно быстро.


 
Nikolay M.   (2002-06-07 12:37) [4]

2
> kaif © (07.06.02 12:33)

опередил на 2 минуты :))



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.07.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.006 c
3-901
DKalinin
2002-06-07 14:36
2002.07.01
Помогите! Какую ошибку перехватывать при открытии ADOquery надо?


3-927
PavelB
2002-06-06 09:16
2002.07.01
обновление dbcontrols


1-1105
ZEE
2002-06-12 15:12
2002.07.01
System Menu


8-1116
Digitman
2002-02-24 14:26
2002.07.01
Всем интересующимся цифровой обработкой сигналов !!!


1-1050
Oleg2002
2002-06-18 18:50
2002.07.01
Delphi и Word...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский