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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.11.2009, 10:20   #1  
propeller is offline
propeller
Участник
Аватар для propeller
 
359 / 29 (1) +++
Регистрация: 25.07.2007
! Получить значение qbr ..
Аx4.0
Имеется класс (extends RunBase) который создан для формирования отчета.
В методе initParmDefault()
X++:
query = new Query("");
qbds = query.addDataSource(tableNum(LedgerTrans));
qbrDate = qbds.addRange(fieldNum(LedgerTrans, TransDate));
Далее в методе run() пытаюсь получить значение фильтра, которое внес пользователь
через qbrDate , qbrDate.value(). Или просто смотрю через дебагер, там пусто.

Если делаю так:
X++:
DateValue = queryrun.query().DatasourceNo(1).range(1).value();
То значение получаю.

Вопрос как можно получить значение используя qbrDate?
Старый 05.11.2009, 10:32   #2  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
все дело в том, что в методе initParmDefault() вы просто инициализируете qbr... значение вводится позже
что бы получить значение нужно в методе run() до того как вы пытаетесь получить значение ещё раз проинициализировать qbrDate из запроса, который уже заполнил пользователь...
X++:
qbrDate = queryrun.query().DatasourceTable(tableNum(LedgerTrans)).findRange(fieldNum(LedgerTrans, TransDate)).value();
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
За это сообщение автора поблагодарили: propeller (1).
Старый 07.11.2009, 00:19   #3  
corner77 is offline
corner77
Участник
 
18 / 25 (1) +++
Регистрация: 28.04.2009
Тот Query, который Вы создаете в методе initParmDefault() и тот Query, который находится внутри объекта QueryRun физически разные объекты. То есть, когда выполняется new QueryRun(query), то QueryRun не использует Ваш созданный Query by reference, а копирует его в новый - точную копию Вашего. Но он уже будет в другой области памяти а переменная qbrDate ссылается на старый range, который уже фактически не используется. Поэтому, если в конце initParmDefaul() стоит queryRun = new QueryRun(query), то присваивание qbrDate нужно делать на основании queryRun.query(). Правда тогда нужно не забыть что queryRun создается как правило еще и в методе unpack(). Так что лучше использовать явное обращение через queryrun.query().DatasourceTable(tableNum(LedgerTrans)).findRange(...)
За это сообщение автора поблагодарили: propeller (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
WebComboBox - как получить выбранное значение? egorych DAX: Программирование 8 17.10.2007 22:44
Как получить значение переменной из типа Object Arahnid DAX: Программирование 6 23.05.2007 16:17
Получить значение поля таблицы по номеру (Id) поля Anais DAX: Программирование 2 15.04.2004 13:00
Как получить значение поля Datasource на динамически созданной форме? storer DAX: Программирование 2 14.11.2003 16:41
получить значение из SysQueryForm Дмитрий DAX: Программирование 4 16.08.2002 16:29

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

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

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