06.07.2006, 08:45 | #1 |
Участник
|
Критерии на отчетах
Уважаемые Гуру! Помогите, пожалуйста, новичку решить проблему.
Нужно: определить на форме значения критериев, после чего по кнопке вызвать отчет в соответствии с выбранными значениями, причем, спрятав стандартное окошко отчета, т.е. вывести сразу на экран готовый отчет. Есть отчет, в котором определены два связанных DataSource, установлены поля Range и Sorting. В init методе отчета устанавливаю значения критериев вида: query.dataSourceNo(1).range(1).value(_headerId); Если запустить отдельно отчет, то все работает замечательно - критерии автоматически проставляются в запросе. Но еcли сначала запускается форма, от куда затем передаются значения критериев в отчет, то ничего не получается... Значения передаются в отчет правильно, но запрос никак не изменяется, в критерии проставляются нули. Что я не так делаю? Может определение Query отчета при открытии его из формы происходит как-то по другому? Помогите, пожалуйста, разобраться |
|
06.07.2006, 09:01 | #2 |
NavAx
|
Попробуйте так:
PHP код:
|
|
06.07.2006, 09:53 | #3 |
Участник
|
Не получилось
Цитата:
Сообщение от Roman777
Попробуйте так:
PHP код:
"Ошибка времени выполнения. : <пустой класс> Объект не инициализирован. Трассировка стека: (C) \Classes\<unknown>\query ..." query() выдает NULL |
|
06.07.2006, 10:40 | #4 |
NavAx
|
1. Как вы вызываете отчет из формы?
2. приведите код метода init в отчете |
|
06.07.2006, 12:46 | #5 |
Участник
|
А вы этот
"this.queryRun().query().dataSourceNo(1).range(1).value(_headerId); " код написали до или после super() в init? |
|
13.07.2006, 16:06 | #6 |
Участник
|
Цитата:
Сообщение от kashperuk
А вы этот
"this.queryRun().query().dataSourceNo(1).range(1).value(_headerId); " код написали до или после super() в init? У меня супер вызывается после кода (в конце init()) |
|
13.07.2006, 16:07 | #7 |
Участник
|
Цитата:
Сообщение от Roman777
1. Как вы вызываете отчет из формы?
2. приведите код метода init в отчете 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 |
Участник
|
Цитата:
Сообщение от Прокопьева
А это может так сильно повлиять?
У меня супер вызывается после кода (в конце init()) Посмотрите любой Report - SalesInvoice, к примеру. super() идет первым, за ним уже дальнейшая обработка. До super() обычно пишут только вызов ошибки, если отчет вызван с неправильными параметрами |
|
13.07.2006, 16:37 | #9 |
Участник
|
Цитата:
Сообщение от Прокопьева
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(); Если запустить отчет напрямую, определяя значения критериев - все подставляет - а так первый не подставляет, во второй ноль пишет... НО, ИМХО, лучше создавать их из кода - проще читать. Метод findOrCreateRange_RU() класса Global для этого обычно использую. и еще, я всегда стремлюсь явно указывать датасорс, по tableNum обычно, потому что вот, читая ваш код, (1) почти ничего не говорит. |
|
13.07.2006, 16:41 | #10 |
NavAx
|
Да, кстати, если выставить Range таким образом:
PHP код:
|
|
13.07.2006, 16:42 | #11 |
Участник
|
Цитата:
Сообщение от Roman777
Да, кстати, если выставить Range таким образом:
PHP код:
|
|
19.07.2006, 07:33 | #12 |
Участник
|
Большое спасибо за советы
|
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|