|
27.10.2006, 13:08 | #1 |
Участник
|
Report, groupBy и критерии выбора
Вопрос по этой теме уже поднимался в 2003-м году, но что-то остался без ответа.
Хотелось бы всё-таки понять почему если в отчёте у источника данных свойство OrderMode выставить в GroupBy, то можно попрощаться с выбором критериев в диалоге отчёта. Если так и должно быть, то непонятна логика.
__________________
Дмитрий |
|
27.10.2006, 13:22 | #2 |
Участник
|
по-моему, это заблуждение
Ведь select с group by и полями where работает. Другое дело, что сортировку менять нельзя (в смысле, что это уже и не сортировка будет вовсе, а группировка) |
|
27.10.2006, 13:36 | #3 |
Участник
|
Вот пример - прекрасно все работает:
X++: static void OpelItemQueryGroupBy(Args _args) { inventTable inventTable; QueryRun qr; Query query; QueryBuildDataSource queryBuildDataSource; QueryBuildDataSource queryBuildDataSourceModule; QueryBuildRange queryBuildRange; QueryBuildRange qbrBlocked; ; query = new Query(); queryBuildDataSource = query.addDataSource(tableNum(InventTable)); queryBuildRange = queryBuildDataSource.addRange(fieldNum(InventTable, ItemId)); queryBuildRange = queryBuildDataSource.addRange(fieldNum(InventTable, ItemType)); queryBuildDataSource.orderMode(OrderMode::GroupBy); queryBuildDataSource.addSortField(fieldNum(InventTable, ItemGroupId)); box::info(queryBuildDataSource.toString()); qr = new QueryRun(query); if (qr.prompt()) { while (qr.next()) { inventTable = qr.getNo(1); info(strfmt("%1", inventTable.ItemGroupId)); } } } |
|
27.10.2006, 15:17 | #4 |
Участник
|
А как в вашем примере пользователь изменит критерии выборки? Проблема в том что в отчёте, где у источника данных стоит GroupBy, пользователь не может по нажатию кнопки "Выбор" указать что-либо своё. Вот в чём дело. Программно я-то конечно могу какой захочу range запихать туда. О пользователях забочусь
__________________
Дмитрий |
|
27.10.2006, 18:29 | #5 |
Moderator
|
Цитата:
Допустим что есть отчет который отражает данные в разрезе клиентов на дату(Заданы группировки по коду клиента и дате). Пусть пользователь может добавить еще одно поле (оно добавится в режиме группировки), например, номер накладной (отображение номера накладной в отчете не предусмотрено) В итоге пользователь получает вместо одной строки с суммой по клиенту на дату несколько строк с разными суммами, а мы крики что опять все пАлАмАлАсь!
__________________
С уважением, kvan. |
|
27.10.2006, 15:28 | #6 |
Участник
|
А, понял о чем вы - Да, добавлять поля в группировку по желанию пользователя нельзя. Я думал, что у вас не получается ввести значения указанных фильтров.
Извините. |
|
27.10.2006, 15:39 | #7 |
Участник
|
а если попробовать создать что-то типа формы, в которой можно указть состав полей для группировки и фильтрации, потом всё это дело в цикле собрать и прицепить к Query? или вам нужна форма именно самого "фильтра"?
|
|
27.10.2006, 15:48 | #8 |
Member
|
Традиционно встряну.
В некоторых частных случаях решением проблемы м.б. умелое использование View.
__________________
С уважением, glibs® |
|
27.10.2006, 17:56 | #9 |
----------------
|
Можно подправить класс SysQueryForm метод datasourceLoad() - убрать ограничение для источников данных с orderMode() == OrderMode::OrderBy
|
|