22.04.2004, 15:11 | #1 |
Участник
|
Как передать в отчет отфильтрованные данные из формы?
У меня есть форма с гридом по трем связанным DS.
Стандартными средствами Axapta я делаю в гриде фильтр. Как мне сформировать отчет по отфильтрованным данным? Т.е. как мне передать из формы в отчет все наложенные Range? |
|
22.04.2004, 15:41 | #2 |
Участник
|
На DS есть метод query(). при помощи него можно программно менять фильры на форме. Если попробовать передать е качесве параметра в отчет - думаю должно получиться
|
|
22.04.2004, 17:05 | #3 |
Юзовские
|
Рискну вставить свое слово.
Передавать нужно не query, a queryRun, причем взять его из верхнего датасорса, т.к. query не учитывает фильтры наложенные пользователем. |
|
22.04.2004, 17:10 | #4 |
Участник
|
Согласен
|
|
22.04.2004, 18:39 | #5 |
Участник
|
PHP код:
Количество таблиц в отчете может быть больше или меньше DS в форме ... |
|
23.04.2004, 10:28 | #6 |
Участник
|
Теперь можно например заполнить временную таблицу и на ней построить отчет, тогда отчет будет строится в 2 прохода - заполнение временной таблицы и непосредственно вывод отчета, а можно и воспользаваться .sent()
PHP код:
|
|
23.04.2004, 10:38 | #7 |
Юзовские
|
Если есть острая необходимость перенести range'ы и нет желания париться с временной таблицей, можно воспользоваться методами
dataSourceCount() у query и rangeCount() у queryBuildDataSource, чтобы перебрать все датасорсы и range'ы. Примеры можно найти в методах класса SysQuery. Например в SysQuery::unpackRangeAndSortorder. |
|
23.04.2004, 13:59 | #8 |
Moderator
|
Стоит заметить что в DataSource.queryRun().query() лежит как раз текущий запрос - с учетом всех фильтров, установленных пользователем.
А вот уже из этого query можно сделать отдельный queryRun, с которым можно будет делать все что угодно. |
|
|
За это сообщение автора поблагодарили: AlexeyS (2). |