SET FILTER | |
---|---|
Каратаев Автор Сообщений: 3931 Откуда: Алматы Дата регистрации: 04.12.2001 |
Туплю на ровном месте. Есть таблица stov, в которой имеется поле kod_par. Есть курсор cur_nosert, в котором тоже есть поле kod_par.
Мне надо навесить на таблицу фильтр по полю kod_par имеющемуся в курсоре. Именно фильтр, а не выборку сделать. Конструкция типа
И вот что-то затупил, как такой фильтр навесить? ------------------ Никогда не бывает настолько плохо, чтобы не могло быть еще хуже. ![]() |
Re: SET FILTER | |
---|---|
PaulWist Сообщений: 14501 Дата регистрации: 01.04.2004 |
Добавь в stov доп. поле в котором будет признак наличия в курсоре cur_nosert, по этому полю фильтр.
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) ![]() |
Re: SET FILTER | |
---|---|
Каратаев Автор Сообщений: 3931 Откуда: Алматы Дата регистрации: 04.12.2001 |
Спасибо, Паша... Я думал о подобном варианте, но хотелось бы как-то налету, без модификации таблицы. Если ничего другого в голову не придёт, то буду этим способом изворачиваться...
------------------ Никогда не бывает настолько плохо, чтобы не могло быть еще хуже. ![]() |
Re: SET FILTER | |
---|---|
PaulWist Сообщений: 14501 Дата регистрации: 01.04.2004 |
Попробуй indexseek() возможно сработает, но думаю, что нет.
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) ![]() |
Re: SET FILTER | |
---|---|
akvvohinc Сообщений: 4001 Откуда: Москва Дата регистрации: 11.11.2008 |
1) либо в выражении SET FILTER использовать SEEK() / INDEXSEEK() / KEYMATCH() 2) либо установить SET RELATION с курсором, а в выражении SET FILTER проверять на NOT EOF(<курсор>) ![]() |
Re: SET FILTER | |
---|---|
Владимир Максимов Сообщений: 14063 Откуда: Москва Дата регистрации: 02.09.2000 |
Если количество строк в курсоре относительно небольшое, то можно еще через массивы организовать
Но в этом случае надо будет тщательно следить за областью видимости этого массива. Чтобы он был виден из фильтра. Если глобальный - вовремя удалять И еще, если в результате выборки нет данных (нет записей в cur_nosert), то и массив создан не будет. Поэтому определять массив в таких случаях надо явным образом до команды Select-SQL ![]() |
Re: SET FILTER | |
---|---|
of63 Сообщений: 24629 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
()
Если первый селект рядом (в одной процедуре) с вторым, то достаточно не "PUBLIC gaKod_par(1)", а PRIVATE... Если в результате первой выборки "нет данных" (и массив "пуст", хотя в фоксе - это условное понятие - переменная-масси определена, размер-то есть =1), то надо придумать условность, что бы отличить массив из одного элемента от массива без элементов, например, если ISNULL(gaKod_par) - то в массиве нет элементов. Но об этом надо позаботиться, например, если после первой выборки _TALLY=0, то STORE .NULL. TO gaKod_par... ![]() |
Re: SET FILTER | |
---|---|
akvvohinc Сообщений: 4001 Откуда: Москва Дата регистрации: 11.11.2008 |
"Видимость" в случае чего просто свалит программу, и ошибка будет исправлена. А вот то, что такой способ перестанет правильно работать при изменении курсора, на мой взгляд, важнее, так как программа внешне будет продолжать нормально работать, но фильтр перестанет отражать реальность. Заметить такое не всегда просто. В общем, этот массив будет требовать обновления при каждой операции с курсором, затрагивающей ключевое поле. И об этом действительно придется постоянно помнить. Я бы не стал без особой нужды пользоваться таким способом. Ну, только если по каким-то причинам курсор не может быть проиндексирован по нужному полю. ![]() |
Re: SET FILTER | |
---|---|
Каратаев Автор Сообщений: 3931 Откуда: Алматы Дата регистрации: 04.12.2001 |
Спасибо, Владимир. Возьму на заметку такой способ. Но в данном случае, в курсоре несколько тысяч записей... Наверное тут через массив нецелесообразно...
Признаюсь честно - я даже и не подумал о таком способе. Но вот именно это замечательно и сработало.
Спасибо всем за помощь! ![]() ------------------ Никогда не бывает настолько плохо, чтобы не могло быть еще хуже. ![]() |
© 2000-2023 Fox Club  |