06.04.2006, 10:20 | #1 |
Участник
|
Здравствуйте.
Как можно сбросить все фильтры, установленные для таблицы, кроме фильтра, установленного с помощью MARK? Неужели нужно перебирать все поля SETRANGE(FieldN)? |
|
06.04.2006, 10:36 | #2 |
Moderator
|
Это сложно?
|
|
06.04.2006, 12:42 | #3 |
Участник
|
Я думаю, что есть еще один вариант:
допустим есть табличка Rec1 у которой установлены фильтры (в т.ч. и фильтр MARK) Создаем Rec2 того же типа, что и Rec1. Делаем : Rec2 := COPY(Rec1); Rec1.RESET; Rec2.MARKONLY(TRUE); IF Rec2.FIND('-') THEN REPEAT Rec1.GET(Rec2.xxx, Rec2.xxx); Rec1.MARK(TRUE); UNTIL Rec2.NEXT = 0; |
|
06.04.2006, 13:02 | #4 |
Участник
|
Цитата:
Сообщение от Taras
Я думаю, что есть еще один вариант:
допустим есть табличка Rec1 у которой установлены фильтры (в т.ч. и фильтр MARK) Создаем Rec2 того же типа, что и Rec1. Делаем : Rec2 := COPY(Rec1); Rec1.RESET; Rec2.MARKONLY(TRUE); IF Rec2.FIND('-') THEN REPEAT Rec1.GET(Rec2.xxx, Rec2.xxx); Rec1.MARK(TRUE); UNTIL Rec2.NEXT = 0; |
|
06.04.2006, 13:52 | #5 |
Moderator
|
Сброс фильтров - более правильное решение. Скорость работы не будет зависить от количества marked-записей
|
|
06.04.2006, 15:15 | #6 |
Участник
|
В общем, нашел еще два варинта:
1. Скопировать фильтры с помощью COPYFILTERS из другой переменной, на которую заведомо не наложено никаких фильтров. 2. Сбросить фильтры с помощью SETVIEW. |
|
06.04.2006, 15:32 | #7 |
Участник
|
Еще вариант - использовать GETFILTERS.
Потом пробегаться уже не по всем полям, а только по тем, на которые наложен фильтр.
__________________
С уваженем, rootadmin |
|