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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.01.2004, 15:38   #1  
Paul_ST is offline
Paul_ST
Участник
 
144 / 11 (1) +
Регистрация: 26.11.2003
Адрес: Екатеринбург
Установка Range в отчёте
Очень хотелось бы понять как можно в отчёте наложить динамический Range на таблицу, которая указана единственным датасорсом. Т.е. нужно всего лишь установить фильтрацию на используемую таблицу. Причём значение фильтра (скажем, для простоты, фильтрация по одному полю) задаётся динамически - появляется в перехваченном методе init через args.caller() через метод формы, из которой (через MenuItem) вызван данный отчёт.

1) Пробовал через QueryBuildRange - но его установка в init'е :

myRange = element.query().dataSourceNo(1).addRange(fieldNum(MyTable, Num));
myRange.value('1');

ни к чему не приводит

2) аналогичным образом пробовал в ExecuteSection

3) обнаружил , что в init у Query в отчёте - никогда не вызывается


Буду очень признателен за любой совет!
__________________
Paul_ST
Старый 05.01.2004, 16:14   #2  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
queryRun
Попробуй наложить range не на query, а на queryRun
Старый 05.01.2004, 16:17   #3  
Paul_ST is offline
Paul_ST
Участник
 
144 / 11 (1) +
Регистрация: 26.11.2003
Адрес: Екатеринбург
А где взять взять QueryRun? ) К какому объекту он относится?
__________________
Paul_ST
Старый 05.01.2004, 16:28   #4  
Paul_ST is offline
Paul_ST
Участник
 
144 / 11 (1) +
Регистрация: 26.11.2003
Адрес: Екатеринбург
Если самому создавать объект класса QueryRun через new, то что указать в качестве параметра?
__________________
Paul_ST
Старый 05.01.2004, 17:09   #5  
bucken is offline
bucken
Участник
Аватар для bucken
 
259 / 12 (1) ++
Регистрация: 04.09.2003
Адрес: Москва
странно...
У меня почти также в init-e:
PHP код:
QueryBuildDataSource    dSInventTable;
.....

dSInventTable                  this.query().dataSourceTable(tableNum(InventTable));
.....
dSInventTable.addRange(fieldNum(InventTablem_VendAccount))
            .
value(priviosVendAccountRangeValue ", что-то".); 
И это работает!

Замечания:
1) во первых в ините это нужно делать после вызова super() (мало ли что там могет твориться)
2) Употребление двойных ковычек существено али нет.
3) Если объявить строчку
так:
PHP код:
str s="что-то"
а затем наложить :
PHP код:
dSInventTable.addRange(fieldNum(InventTablem_VendAccount))
            .
value(s); 
то стопроцентно не работает. незнаю почему. может как-то ее форматить надо, всякие там функции форматирующие типа rangeValue() не помогают.
4) Это все мои предположения, к сожалению, точно я не знаю в чем тут причина.
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5
Старый 05.01.2004, 17:14   #6  
Paul_ST is offline
Paul_ST
Участник
 
144 / 11 (1) +
Регистрация: 26.11.2003
Адрес: Екатеринбург
Спасибо большое!

Но только конечно - принципиально хотелось бы подставлять range через переменную.

А в строке:

dSInventTable.addRange(fieldNum(InventTable, m_VendAccount))
.value(priviosVendAccountRangeValue + ", что-то".);

переменная priviosVendAccountRangeValue разве не просто str? Иначе чем это отличается от случая подстановки строки s?
__________________
Paul_ST
Старый 05.01.2004, 17:18   #7  
bucken is offline
bucken
Участник
Аватар для bucken
 
259 / 12 (1) ++
Регистрация: 04.09.2003
Адрес: Москва
не совсем...
PHP код:
    str                     priviosVendAccountRangeValue;
.....
priviosVendAccountRangeValue   dSInventTable.rangeField(fieldNum(InventTablem_VendAccount)).value(); 
Да это строка.
Но ее значение, не проставляется так:
PHP код:
 priviosVendAccountRangeValue "ля-ля"
тут какая-то завязка на форматирование, просто так не подставишь. фиг знает почему.
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5
Старый 06.01.2004, 09:27   #8  
Paul_ST is offline
Paul_ST
Участник
 
144 / 11 (1) +
Регистрация: 26.11.2003
Адрес: Екатеринбург
Ситуация несколько исправилась - когда я стал не просто добавлять (вызывать AddaRange) Range (всё по прежнему делается через QueryBuildRange), а предварительно искать его у нужного поля и если нашёлся, то изменять его значение.
После чего фильтрация заработала.
Интересно то, что init у Query вызывается много раз (я просто поставил Info в тело метода)

Осталась единственная проблема - как установить (или изменить) значение Range на значение переданное в отчёт .

Это переданное значение я полуаю в init у отчёта через вызов метода формы (которая вызывает мой отчёт через MenuItem). Беда в том, что переменные , описанные в classdeclaration у отчёта , недоступны в init у Query.
Может есть идеи - как в init у Query передать значения, полученные в init у отчёта?
__________________
Paul_ST
Старый 06.01.2004, 10:16   #9  
bucken is offline
bucken
Участник
Аватар для bucken
 
259 / 12 (1) ++
Регистрация: 04.09.2003
Адрес: Москва
1) А зачем править query в его init-e?
у меня правиться в init-е самого отчета:
this.query....
Таким образом, в передаче нет необходимости.
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5
Старый 06.01.2004, 10:23   #10  
Paul_ST is offline
Paul_ST
Участник
 
144 / 11 (1) +
Регистрация: 26.11.2003
Адрес: Екатеринбург
Интересная мысль, только я уже так пробовал - даже если не подставлять динамически value для Range у this.query в init у отчёта (а только статически), то если просто сам отчёт запускать (из АОТ), тогда работает, а вот если его из формы вызывать - почему то нет фильтрации
__________________
Paul_ST
Старый 06.01.2004, 10:37   #11  
bucken is offline
bucken
Участник
Аватар для bucken
 
259 / 12 (1) ++
Регистрация: 04.09.2003
Адрес: Москва
а как ты из формы вызваешь? Ты говоришь, что через menuItem, т.е. через menuFunction. Такое ощущение, что вызов как-то не так проходит и init отчета не вызывается.
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5
Старый 06.01.2004, 10:43   #12  
Paul_ST is offline
Paul_ST
Участник
 
144 / 11 (1) +
Регистрация: 26.11.2003
Адрес: Екатеринбург
init как раз вызывается - я там точки останова вовсю ставлю
__________________
Paul_ST
Старый 06.01.2004, 17:31   #13  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Re: Установка Range в отчёте
Цитата:
Изначально опубликовано Paul_ST
Пробовал через QueryBuildRange - но его установка в init'е :

myRange = element.query().dataSourceNo(1).addRange(fieldNum(MyTable, Num));
myRange.value('1');

ни к чему не приводит
Хм... должно работать.
А какой отчет?

У этого отчета небось fetch или send перекрыт? А внутри этих перекрытых методов программист наваял собственный select наплевав на query?

Можно отчет сюда положить? Если он стандартный, то скажи его назание?
Старый 06.01.2004, 17:33   #14  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано Paul_ST
Ситуация несколько исправилась - когда я стал не просто добавлять (вызывать AddaRange) Range (всё по прежнему делается через QueryBuildRange), а предварительно искать его у нужного поля и если нашёлся, то изменять его значение.
После чего фильтрация заработала.
очень и очень странно.
И все же, очень хочется посмотреть на проект с этим отчетом.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Непонятки с Range в отчете Yprit DAX: Программирование 4 05.08.2012 23:49
axaptapedia: Packing date range values in queries Blog bot DAX Blogs 1 09.11.2007 13:10
Range на datasource в отчете Smith DAX: Программирование 2 16.07.2007 11:06
Работа с Excel через COM и ошибка 0x800A03EC (Range.AutoFilter) gl00mie DAX: Программирование 15 30.03.2007 18:37
Не срабатывает Range в отчете - почему? Zabr DAX: Программирование 7 14.07.2003 13:49

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

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

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