Проблема с SET FILTER TO | |
---|---|
ZenTigra Автор Сообщений: 514 Дата регистрации: 03.12.2004 |
Для таблицы устанавливаю фильтр командой
мне нужно чтобы фильтр начал действовать, но в хелпе написано Выражение фильтрации не вычисляется до тех пор, пока не будет перемещен указатель текущей записи. Как обойти это? Не делаю SKIP +/- 1 Если б таблица была б в Grid-е, я бы просто сделал Refresh, а так не пойму как заставить фильтр действовать, не перемещая запись... PS.Отказаться от фильтра не предлагать... Исправлено 1 раз(а). Последнее : ZenTigra, 15.06.17 19:31 |
Re: Проблема с SET FILTER TO | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Запомнить № записи.
Переместить курсор на др. запись. Вернуться. ------------------ |
Re: Проблема с SET FILTER TO | |
---|---|
ZenTigra Автор Сообщений: 514 Дата регистрации: 03.12.2004 |
Спасибо за ответ, не успел написать, что нашел очень простое решение
LOCATE FOR key=1 Условие задачи было, что если запись не попадает в фильтр то необходимо переместить курсор на початок таблицы... PS.Вопрос решен... |
Re: Проблема с SET FILTER TO | |
---|---|
of63 Сообщений: 25244 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
GO TOP тоже на початок таблицы встает...
|
Re: Проблема с SET FILTER TO | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
GO TOP не оптимизируется, а LOCATE даже без условия - оптимизируется.
2 ТС фильтр SET FILTER - это условия для ПЕРЕХОДОВ по записям. Он никуда сами "неподходящие" записи не убирает. Чтобы проверить одну текущую запись не нужно никаких SET FILTER - просто само условие и проверяй. логическое поле/выражение=.T. это "масло масляное". Вполне достаточно писать ПРОСТО логическое поле/выражение. Т.е. SET FILTER TO mark или там IF mark ------------------ WBR, Igor |
Re: Проблема с SET FILTER TO | |
---|---|
of63 Сообщений: 25244 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
...не понял, про GO TOP, который "не оптимизируется". Как понять? 2 вопроса:
1. В текущем ORDER фокс не может найти "самая верхняя запись" (ну, под произвольным фильтром оптимизируется, согласно выражению фильтра, как и LOCATE и любая другая команда "поиск в таблице") 2. ТС хочет встать на начало ("початок") таблицы, об ORDER не упоминает. GO TOP разве не сделает перемещение в таблице, и курсор встанет на "первую" существующую запись под фильтром (в терминах ТС "фильтр начнет действовать") |
Re: Проблема с SET FILTER TO | |
---|---|
ZenTigra Автор Сообщений: 514 Дата регистрации: 03.12.2004 |
Задача вот в чем была
Есть две таблицы, в них не больше 10 записей, обе они используются в качестве меню. Но отображение записей во второй таблице зависит от выбранной записи в первой таблице. То есть необходимо накладывать фильтр для второй таблицы. И для этого подходит SET FILTER TO..., но возникла проблема, что при выборе записи в первой таблице, когда предыдущая запись во второй не удовлетворяет условием фильтра, необходимо установить запись на начало отфильтрованных записей во второй таблице... Код вышел что-то на подобии этого
PS.Простите за беспокойство, но бывают простые вещи не сразу в голову приходят. До кода не придираться, то просто пример... Исправлено 1 раз(а). Последнее : ZenTigra, 15.06.17 21:33 |
Re: Проблема с SET FILTER TO | |
---|---|
akvvohinc Сообщений: 4217 Откуда: Москва Дата регистрации: 11.11.2008 |
Что-то здесь не так. Если условие задачи описано верно, а условие фильтра - значение .T. в поле mark, то для решения этой задачи надо проверить значение именно этого поля в текущей записи table2:
Исправлено 3 раз(а). Последнее : akvvohinc, 16.06.17 02:32 |
Re: Проблема с SET FILTER TO | |
---|---|
akvvohinc Сообщений: 4217 Откуда: Москва Дата регистрации: 11.11.2008 |
Эта фраза не означает, что команда фильтрации не начала действовать. Она всего лишь говорит о том, что текущая запись в фильтруемой таблице не изменится автоматически, даже если она не удовлетворяет условию фильтра. Но то же самое будет и в том случае, если после наложения фильтра вы переместитесь на запись, не удовлетворяющую условию фильтра, командой GO <recno>, или захотите изменить запись, не попадающую в фильтр, командой REPLACE RECORD <recno> и т.д. и т.п. То есть, фильтр "ощущается" лишь при работе с диапазоном записей и относительных перемещениях (начало, конец, следующая, предыдущая), но не защищает от абсолютных перемещений и правок. Исправлено 1 раз(а). Последнее : akvvohinc, 16.06.17 02:29 |
Re: Проблема с SET FILTER TO | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Про SET FILTER уже все изложили)
Но есть и другой путь, может и не очень эффективный в данной ситуации, но достаточно стандартный для клиент-сервера. Вообще, описана типичная ситуация мастер-детали. И по мастеру, просто делают перевыборку в новый курсор. И никаких фильтров. (ведь бывает не 10 записей, и миллионы) Это явно создает свои сложности. Но решив их однажды, этим механизмов можно пользоваться многократно. ------------------ |
Re: Проблема с SET FILTER TO | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
А что тут не понятного то?
------------------ WBR, Igor |
Re: Проблема с SET FILTER TO | |
---|---|
of63 Сообщений: 25244 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
|
Re: Проблема с SET FILTER TO | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Так будет не совсем корректно, т.к. в этом малом курсоре нет записи с "подходящим" кодом 97 какой надо брать тогда уж для фильтра, или менять генерилку для второго поля...
------------------ WBR, Igor |
© 2000-2024 Fox Club  |