15.07.2003, 18:52 | #1 |
Участник
|
Range и стандартный фильтр
Ситуация:
Есть DataSource, по нему накладываются програмным образом фильтры через Range. В то же время фильтрацию накладывают пользователи стандартным образом. При наложении фильтров из кода, юзерские фильтры прибиваются. Как этого избежать? Вроде бы ситуация обсуждалась, но поиском ничего не нашёл... Посоветуйте чего нибудь, плиз. |
|
15.07.2003, 22:24 | #2 |
Участник
|
Re: Range и стандартный фильтр
Цитата:
Изначально опубликовано uvi
При наложении фильтров из кода, юзерские фильтры прибиваются. Надо изменять текущий query, а не создавать новый. Надо добавлять range к текущему query, а не изменять существующий. Вкратце - это сделать можно. Пробуйте и учитесь. Успехов |
|
15.07.2003, 22:37 | #3 |
----------------
|
queryRun().query()
Обычно это происходит, когда в коде модифицируется
_DS.query() вместо _DS.queryRun().query() хотя существует много способов сделать что-то неправильно |
|
16.07.2003, 13:52 | #4 |
Участник
|
Wamr, спасибо за наводку.
Наложил свои фильтры через QueryRun().Query() и юзерский фильтр сохранился. Но возникла друга проблема: стандартная форма фильтрации не видит наложенных фильтров!!! Вообще никаких - ни пользовательских ни наложенных програмным путём! А они есть и работают! Все используемые Range есть есть как в formDataSource.QueryRun().Query() так и в formDataSource.Query(). Кто нибудь сталкивался с такой ситуацией? |
|
16.07.2003, 14:37 | #5 |
Moderator
|
Юра, ты меня удивляешь
Или я что-то не доконца понял или ...
Мы же это уже столько раз уже делали. Я же даже инструкцию писал. Сейчас прям оттуда скопирую: ClassDeclaration формы объявляем переменную PHP код:
PHP код:
PHP код:
Небольшая добавочка: Столкнулся со следующей проблемой – если есть форма с двумя DataSource’ми и необходимо наложить фильтр на второй DataSource, то все не так просто. Опытным путем я установил, что инициализировать Range надо в init() второго DataSource, а накладывать value обязательно на первом. Если делать все так - то все работает - я только что проверил. Видны и твои фильтры и те, которые дополнительно накладывают пользователи. Если что-то не работает, значит надо искать проблемы в остальном коде. Удачи. |
|
16.07.2003, 14:49 | #6 |
Участник
|
Спакойно, без паники!
Во первых твой код прибъёт юзерские фильтры. Как выше было написанно юзать надо formDataSource.QueryRun().Query() а не formDataSource.Query() в этом собстенно и был вопрос. P.S. ситуация с отображением фильтров разрешилась сама собой. |
|
16.07.2003, 15:15 | #7 |
Moderator
|
Цитата:
Спакойно, без паники!
из кинофильма "Криминальное чтиво". PHP код:
Или я не понимаю слово прибьет ? Открываю форму - срабатывает мой фильтр. Открываю форму фиьтрации - мой фильтр виден. Добавляю фильтр по другому полю - оба фильтра видны, оба работают. Меняю значение фильтра, установленного из кода, теперь ручками из формы фильтрации - опять все работает. Или я не понимаю значение слова "прибьет" или у меня та самая, золотая, безглючная версия Аксапты. |
|
16.07.2003, 15:50 | #8 |
Участник
|
Да не так всё просто.
Есть форма на ней FormDataSource. Есть класс, который получает этот самый FormDataSource. В классе при его создании к нужной таблице (А) джойном цепляется ещё одна таблица (Б) по которой накладывается Range. В дальнейшем по этим Range меняются условия фильтрации програмым образом внутри класса. Дык вот, когда юзер накладывает свои фильтры по таблице А, а позже класс накладывает по таблице Б, то юзерские фильтры по таблице А исчезают в неизвестном направлении. Это если делать "привычным способом", который ты описал. Если фильтр накладывать на QueryRun().Query() то всё нормально работает. В общем если посмотреть дебагером, то после наложения юзерского фильтра (по крайней мере в моей ситуации) он появляется в FormDataSource.QueryRun().Query() и не появляется в FormDataSource.Query(). Уж почему так - не знаю. |
|
16.07.2003, 16:00 | #9 |
Moderator
|
Цитата:
Да не так всё просто.
Чтобы понять в чем проблема надо смотреть код, особенно (как я подозреваю) вот этот момент: Цитата:
Есть класс, который получает этот самый FormDataSource.
Цитата:
существует много способов сделать что-то неправильно
|
|
16.07.2003, 16:02 | #10 |
Участник
|
да в общем то всё разрешилось успешно
|
|