20.09.2007, 17:10 | #1 |
Участник
|
Глюки Ctrl+F при уже наложенном фильтре?
Вот форма и табличка.
В табличке 6 записей. По умолчанию (в методе init()) формы записи отфильтрованы следующим образом: "Все значения, кроме Bye" Если выполнить поиск (Поиск выполняем по полю FieldId) этого значения (Bye) в гриде, то значения отобразятся, как будто фильтр вначале и не накладывался. Если удалить пользовательский фильтр, он вернется назад. Глюк? Или все же я где-то что-то упустил? Высказываемся! |
|
|
За это сообщение автора поблагодарили: alex55 (1). |
20.09.2007, 17:34 | #2 |
Member
|
А как должно быть?
Нужно телепатическим образом прочитать ваши мысли, чтобы понять, чего вы хотели добиться? В этом суть задачи?
__________________
С уважением, glibs® |
|
20.09.2007, 17:37 | #3 |
Участник
|
Ну, я рассчитываю на то, что если я на Query наложил какой-то фильтр, то пользователь не сможет наплевать на этот фильтр и задать свои условия, увидев те данных, которые вроде как не должен. (про RLS молчим - не тот случай) То есть при наложении фильтра "Bye" не должно отобразиться ни одной записи. Вариант решения приведен в этом же проекте, в методе init(): Если наложить фильтр по fieldId2Ext(field, 1), с таким же значением, то будет работат корректно (с моей точки зрения) |
|
20.09.2007, 17:39 | #4 |
SAP
|
Если отфильтровать по Field 1 да фильтр налаживается не правильно. Но самое интерестное то что если зайти в форму ну там где ставят фильтры, поля Field 1 даже и не видно, наверно по этому то и глючит
|
|
20.09.2007, 17:40 | #5 |
Участник
|
Цитата:
Это просто еще один способ ограничить резвых пользователей. |
|
20.09.2007, 17:42 | #6 |
SAP
|
Цитата:
Поля не видно, потому что я ему статус такой установил (Hidden).
Это просто еще один способ ограничить резвых пользователей. |
|
20.09.2007, 17:46 | #7 |
Участник
|
ну, не видно фильтра, потому что скрыто... qbr.status(RangeStatus::Hidden);
а вообще глюк известный, в любой форме зная его можно посмотреть любый данные. к сожалению, его исправления пока не нашел. если вспомнить, как работает форма с запросами, то баг вполне объяснимый...
__________________
Дайте мне точку опоры, и я переверну земной шар (Архимед) |
|
20.09.2007, 17:49 | #8 |
SAP
|
да так и есть глючит
X++: qbr.status(RangeStatus::Locked); нажал найти buy и там стало просто buy |
|
20.09.2007, 17:51 | #9 |
Участник
|
Ну, решение можно посмотреть в этом же проекте, если раскомментировать код в init() источника.
Правда на SP3 при определенных действиях слетает. и на SP5 тоже Правда у меня не получилось добиться этого. На 4.0 SP2 тоже самое... |
|
20.09.2007, 17:54 | #10 |
Участник
|
всё потому, что в init создается range для Query, который потом КОПИРУЕТСЯ в queryRun и сверху в QueryRun.Query (в копии нашего родимого Query) накладывается фильтр пользователя.
В результате исходный фильтр по полю слетает (это уже баг). Настоящая головная проблема, когда это информация просачивается на территорию не чистого на руку заказчика....... который "открывает" для себя "запрещеные" данные и гадит в них! Приходится делать кучу доп.проверок в каждой функции, надежды на фильтр - никакой.
__________________
Дайте мне точку опоры, и я переверну земной шар (Архимед) |
|
20.09.2007, 17:56 | #11 |
Участник
|
3.0 SP3 никаких особенный действий, абсолютно те же!
результат на экран!
__________________
Дайте мне точку опоры, и я переверну земной шар (Архимед) |
|
20.09.2007, 17:57 | #12 |
SAP
|
Цитата:
Ну, решение можно посмотреть в этом же проекте, если раскомментировать код в init() источника.
Правда на SP3 при определенных действиях слетает. |
|
20.09.2007, 17:58 | #13 |
Участник
|
А в SP5 KR2 дает
Так что срочно все переходите |
|
20.09.2007, 18:00 | #14 |
Участник
|
А для SP3 шников есть тоже свое решение
Добавляем еще один источник - по notexists join и на него накладываем фильтр "Bye" И фиг его уже кто-то снимет |
|
20.09.2007, 18:03 | #15 |
Участник
|
но как известно, notexists join частенько убивает запросы... особенно толстые, где много "полезных" inner join.
__________________
Дайте мне точку опоры, и я переверну земной шар (Архимед) |
|
19.10.2007, 18:00 | #16 |
Участник
|
qbr = this.query().dataSourceNo(1).addRange(fieldNum(TableWrongFind, RecId));
qbr.status(RangeStatus::Hidden); qbr.value(strFmt('((%1.Field1!=\"%2\"))',this.query().dataSourceNo(1).name(),'Bye')); |
|
19.10.2007, 19:52 | #17 |
Модератор
|
Цитата:
Хотите - перекройте filter() на секретном поле datasource-а, хотите - устанавливайте значение фильтра в executeQuery()
__________________
-ТСЯ или -ТЬСЯ ? |
|