AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.07.2003, 18:52   #1  
uvi is offline
uvi
Участник
 
43 / 10 (1) +
Регистрация: 21.05.2003
Range и стандартный фильтр
Ситуация:
Есть DataSource, по нему накладываются програмным образом фильтры через Range.
В то же время фильтрацию накладывают пользователи стандартным образом.
При наложении фильтров из кода, юзерские фильтры прибиваются.
Как этого избежать?
Вроде бы ситуация обсуждалась, но поиском ничего не нашёл...
Посоветуйте чего нибудь, плиз.
Старый 15.07.2003, 22:24   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Re: Range и стандартный фильтр
Цитата:
Изначально опубликовано uvi
При наложении фильтров из кода, юзерские фильтры прибиваются.
Это смотря как создавать.
Надо изменять текущий query, а не создавать новый.
Надо добавлять range к текущему query, а не изменять существующий.

Вкратце - это сделать можно.
Пробуйте и учитесь.
Успехов
Старый 15.07.2003, 22:37   #3  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
queryRun().query()
Обычно это происходит, когда в коде модифицируется
_DS.query() вместо _DS.queryRun().query()

хотя существует много способов сделать что-то неправильно
Старый 16.07.2003, 13:52   #4  
uvi is offline
uvi
Участник
 
43 / 10 (1) +
Регистрация: 21.05.2003
Wamr, спасибо за наводку.
Наложил свои фильтры через QueryRun().Query() и юзерский фильтр сохранился.

Но возникла друга проблема: стандартная форма фильтрации не видит наложенных фильтров!!! Вообще никаких - ни пользовательских ни наложенных програмным путём! А они есть и работают!
Все используемые Range есть есть как в formDataSource.QueryRun().Query() так и в formDataSource.Query().

Кто нибудь сталкивался с такой ситуацией?
Старый 16.07.2003, 14:37   #5  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Cool Юра, ты меня удивляешь
Или я что-то не доконца понял или ...

Мы же это уже столько раз уже делали. Я же даже инструкцию писал. Сейчас прям оттуда скопирую:

ClassDeclaration формы объявляем переменную

PHP код:

... 
QueryBuildRange myRange
... 

в ините дата сорса инициализируем ее после супера

PHP код:
super(); 
.... 
myRange this.query().dataSourceNo(1).addRange(fieldNum(BomTable,BOMId)); 
... 
в executeQuery этого же дата сорса прописуем до супера

PHP код:
... 
myRange.value('001'); 
super(); 
... 
ПРЕДУПРЕЖДЕНИЕ

Небольшая добавочка: Столкнулся со следующей проблемой – если есть форма с двумя DataSource’ми и необходимо наложить фильтр на второй DataSource, то все не так просто. Опытным путем я установил, что инициализировать Range надо в init() второго DataSource, а накладывать value обязательно на первом.


Если делать все так - то все работает - я только что проверил. Видны и твои фильтры и те, которые дополнительно накладывают пользователи.

Если что-то не работает, значит надо искать проблемы в остальном коде.

Удачи.
Старый 16.07.2003, 14:49   #6  
uvi is offline
uvi
Участник
 
43 / 10 (1) +
Регистрация: 21.05.2003
Спакойно, без паники!
Во первых твой код прибъёт юзерские фильтры.
Как выше было написанно юзать надо formDataSource.QueryRun().Query() а не formDataSource.Query() в этом собстенно и был вопрос.

P.S. ситуация с отображением фильтров разрешилась сама собой.
Старый 16.07.2003, 15:15   #7  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Спакойно, без паники!
"Ты когда-нибудь видел как волнуются слоны. Нет ? Правильно - потому, что они не волнуются. Вот и мы будем спокойными как слоны."

из кинофильма "Криминальное чтиво".

PHP код:
Во первых твой код прибъёт юзерские фильтры
Не прибьет. Врожденная осторожность заставила меня проверить этот код в 100-й раз, прежде чем постить его сюда.
Или я не понимаю слово прибьет ?

Открываю форму - срабатывает мой фильтр. Открываю форму фиьтрации - мой фильтр виден. Добавляю фильтр по другому полю - оба фильтра видны, оба работают. Меняю значение фильтра, установленного из кода, теперь ручками из формы фильтрации - опять все работает.

Или я не понимаю значение слова "прибьет" или у меня та самая, золотая, безглючная версия Аксапты.
Старый 16.07.2003, 15:50   #8  
uvi is offline
uvi
Участник
 
43 / 10 (1) +
Регистрация: 21.05.2003
Да не так всё просто.
Есть форма на ней FormDataSource.
Есть класс, который получает этот самый FormDataSource.
В классе при его создании к нужной таблице (А) джойном цепляется ещё одна таблица (Б) по которой накладывается Range. В дальнейшем по этим Range меняются условия фильтрации програмым образом внутри класса.

Дык вот, когда юзер накладывает свои фильтры по таблице А, а позже класс накладывает по таблице Б, то юзерские фильтры по таблице А исчезают в неизвестном направлении. Это если делать "привычным способом", который ты описал. Если фильтр накладывать на QueryRun().Query() то всё нормально работает.

В общем если посмотреть дебагером, то после наложения юзерского фильтра (по крайней мере в моей ситуации) он появляется в FormDataSource.QueryRun().Query() и не появляется в FormDataSource.Query(). Уж почему так - не знаю.
Старый 16.07.2003, 16:00   #9  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Да не так всё просто.
С этого и следовало начинать

Чтобы понять в чем проблема надо смотреть код, особенно (как я подозреваю) вот этот момент:

Цитата:
Есть класс, который получает этот самый FormDataSource.
Как уже было сказано:

Цитата:
существует много способов сделать что-то неправильно
Старый 16.07.2003, 16:02   #10  
uvi is offline
uvi
Участник
 
43 / 10 (1) +
Регистрация: 21.05.2003
да в общем то всё разрешилось успешно
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axaptapedia: Packing date range values in queries Blog bot DAX Blogs 1 09.11.2007 13:10
Работа с Excel через COM и ошибка 0x800A03EC (Range.AutoFilter) gl00mie DAX: Программирование 15 30.03.2007 18:37
Range в стандартный отчет DreamCreator DAX: Программирование 1 15.02.2006 10:23
Не работает стандартный фильтр на форме Julietta DAX: Прочие вопросы 4 06.12.2004 13:30

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:44.