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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.07.2006, 08:45   #1  
Прокопьева is offline
Прокопьева
Участник
 
40 / 10 (1) +
Регистрация: 02.03.2006
Критерии на отчетах
Уважаемые Гуру! Помогите, пожалуйста, новичку решить проблему.

Нужно: определить на форме значения критериев, после чего по кнопке вызвать отчет в соответствии с выбранными значениями, причем, спрятав стандартное окошко отчета, т.е. вывести сразу на экран готовый отчет.

Есть отчет, в котором определены два связанных DataSource, установлены поля Range и Sorting.
В init методе отчета устанавливаю значения критериев вида:
query.dataSourceNo(1).range(1).value(_headerId);

Если запустить отдельно отчет, то все работает замечательно - критерии автоматически проставляются в запросе. Но еcли сначала запускается форма, от куда затем передаются значения критериев в отчет, то ничего не получается...
Значения передаются в отчет правильно, но запрос никак не изменяется, в критерии проставляются нули.
Что я не так делаю? Может определение Query отчета при открытии его из формы происходит как-то по другому?
Помогите, пожалуйста, разобраться
Старый 06.07.2006, 09:01   #2  
Roman777 is offline
Roman777
NavAx
Аватар для Roman777
NavAx Club
 
320 / 64 (3) ++++
Регистрация: 10.02.2005
Адрес: г. Москва
Попробуйте так:
PHP код:
this.queryRun().query().dataSourceNo(1).range(1).value(_headerId); 
Старый 06.07.2006, 09:53   #3  
Прокопьева is offline
Прокопьева
Участник
 
40 / 10 (1) +
Регистрация: 02.03.2006
Не получилось
Цитата:
Сообщение от Roman777
Попробуйте так:
PHP код:
this.queryRun().query().dataSourceNo(1).range(1).value(_headerId); 
При выполнении выдается ошибка:
"Ошибка времени выполнения. : <пустой класс> Объект не инициализирован.
Трассировка стека:
(C) \Classes\<unknown>\query
..."
query() выдает NULL
Старый 06.07.2006, 10:40   #4  
Roman777 is offline
Roman777
NavAx
Аватар для Roman777
NavAx Club
 
320 / 64 (3) ++++
Регистрация: 10.02.2005
Адрес: г. Москва
1. Как вы вызываете отчет из формы?
2. приведите код метода init в отчете
Старый 06.07.2006, 12:46   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
А вы этот
"this.queryRun().query().dataSourceNo(1).range(1).value(_headerId); "
код написали до или после super() в init?
Старый 13.07.2006, 16:06   #6  
Прокопьева is offline
Прокопьева
Участник
 
40 / 10 (1) +
Регистрация: 02.03.2006
Цитата:
Сообщение от kashperuk
А вы этот
"this.queryRun().query().dataSourceNo(1).range(1).value(_headerId); "
код написали до или после super() в init?
А это может так сильно повлиять?
У меня супер вызывается после кода (в конце init())
Старый 13.07.2006, 16:07   #7  
Прокопьева is offline
Прокопьева
Участник
 
40 / 10 (1) +
Регистрация: 02.03.2006
Цитата:
Сообщение от Roman777
1. Как вы вызываете отчет из формы?
2. приведите код метода init в отчете
1. Отчет из формы вызываю с помощью MenuItema, которому в args записываю два параметра.
2.
str param;
container parameters;

;
param = this.args().parm();
parameters = str2con(param,",");
_headerId = conpeek(parameters,1);
_wageTypeCode = conpeek(parameters,2);

if (_headerId !="")
{
query.dataSourceNo(1).range(1).value(_headerId);
}

...

super();

Если запустить отчет напрямую, определяя значения критериев - все подставляет - а так первый не подставляет, во второй ноль пишет...
Старый 13.07.2006, 16:32   #8  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Прокопьева
А это может так сильно повлиять?
У меня супер вызывается после кода (в конце init())
Ну. вообще-то Query инициализируется в super() как раз, поэтому да, это может и влияет, думаю

Посмотрите любой Report - SalesInvoice, к примеру. super() идет первым, за ним уже дальнейшая обработка.

До super() обычно пишут только вызов ошибки, если отчет вызван с неправильными параметрами
Старый 13.07.2006, 16:37   #9  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Прокопьева
1. Отчет из формы вызываю с помощью MenuItema, которому в args записываю два параметра.
2.
str param;
container parameters;

;
param = this.args().parm();
parameters = str2con(param,",");
_headerId = conpeek(parameters,1);
_wageTypeCode = conpeek(parameters,2);

if (_headerId !="")
{
query.dataSourceNo(1).range(1).value(_headerId);
}

...

super();

Если запустить отчет напрямую, определяя значения критериев - все подставляет - а так первый не подставляет, во второй ноль пишет...
Так как написано, необходимо наличие соответствующего Range на Query запроса. Поскольку у вас отчет работает, я так понимаю, что он там есть.
НО, ИМХО, лучше создавать их из кода - проще читать.
Метод findOrCreateRange_RU() класса Global для этого обычно использую.

и еще, я всегда стремлюсь явно указывать датасорс, по tableNum обычно, потому что вот, читая ваш код, (1) почти ничего не говорит.
Старый 13.07.2006, 16:41   #10  
Roman777 is offline
Roman777
NavAx
Аватар для Roman777
NavAx Club
 
320 / 64 (3) ++++
Регистрация: 10.02.2005
Адрес: г. Москва
Да, кстати, если выставить Range таким образом:
PHP код:
this.query().dataSourceNo(1).range(1).value(param);

super() 
в методе Run() отчета, то запрос срабатывает правильно.
Старый 13.07.2006, 16:42   #11  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Roman777
Да, кстати, если выставить Range таким образом:
PHP код:
this.query().dataSourceNo(1).range(1).value(param);

super() 
в методе Run() отчета, то запрос срабатывает правильно.
Ну да. Правильно. Потому что run() вызывается уже аж после завершение метода init() отчета, не говоря уже о формировании запроса отчета
Старый 19.07.2006, 07:33   #12  
Прокопьева is offline
Прокопьева
Участник
 
40 / 10 (1) +
Регистрация: 02.03.2006
Большое спасибо за советы
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Значение поля sum в отчетах Ramil DAX: Программирование 13 08.07.2011 14:08
Критерии фильтрации в запросе nmariya DAX: Функционал 3 05.09.2008 13:15
Количество знаков отображения после запятой в формах и отчетах AX3.0 SP3 ksenia DAX: Функционал 4 07.04.2008 17:27
Сальдо в финансовых отчетах ViV DAX: Функционал 2 19.12.2005 09:35
шрифты в отчетах для тонкого клиента rinugun DAX: Программирование 0 27.01.2004 12:56
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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