![]() |
#1 |
Сенбернар
|
Having в Query - возможно ли и как, если возможно
Собственно, сабж:
- есть Query, построенный из кода, посредством QueryBuild* классов - очень хочется добавить условие а-ля Having Sum(zzz) > 123, но прямых путей для этого я не знаю. Если кто такой путь знает - прямой, либо даже кривой - очень обяжете советом ![]()
__________________
Best Regards, Roman |
|
![]() |
#2 |
северный Будда
|
Аксапта-то какая? В 2012 вроде можно строить квери по calculated fields (могу ошибаться, уже два года с ней не работал, но вроде так)
__________________
С уважением, Вячеслав |
|
![]() |
#3 |
Участник
|
Если Аксапта 2012я, то вместо программирования можно создать новый View с полем SumOfZzz (у поля свойство Aggregation = Sum), и в QueryBuild* использовать этот View.
|
|
![]() |
#4 |
Сенбернар
|
Цитата:
Ax 2009.
__________________
Best Regards, Roman |
|
![]() |
#5 |
Moderator
|
|
|
![]() |
#6 |
Участник
|
Цитата:
я даже классик для собственного удобства делал. https://github.com/mazzy-ax/SysResultSet см. пример использования https://github.com/mazzy-ax/SysResul...sultSet_AX.xpo Последний раз редактировалось mazzy; 10.07.2017 в 17:59. |
|
|
За это сообщение автора поблагодарили: alex55 (1). |
![]() |
#7 |
Участник
|
Без создания View можно.
Программно задавать ограничения можно на уровне Query. Пример с SUM отладить не удалось (за пару минут), но Count точно работает. X++: static void HavingJob(Args _args) { Query query; QueryBuildDataSource datasource; QueryHavingFilter havingFilter; QueryRun queryRun; LedgerJournalTable LedgerJournalTable; query = new Query(); datasource = query.addDataSource(tableNum(LedgerJournalTable)); datasource.addSelectionField(fieldNum(LedgerJournalTable, RecId), SelectionField::Count); datasource.addGroupByField(fieldNum(LedgerJournalTable, JournalType)); havingFilter = query.addHavingFilter(datasource, fieldStr(LedgerJournalTable, JournalType), AggregateFunction::Count); havingFilter.value('=1'); queryRun = new QueryRun(query); while (queryRun.next()) { LedgerJournalTable = queryRun.getNo(1); info(strFmt('Group %1: %2', LedgerJournalTable.JournalType, LedgerJournalTable.RecId)); } } |
|
![]() |
#8 |
Участник
|
Это можно сделать только в 2012. А топикстартеру нужно реализовать это в 2009.
__________________
// no comments |
|
![]() |
#9 |
Участник
|
Делайте выборку с условием из View2 имеющего в datasource ранее созданный View1 c GroupBy.
|
|
![]() |
#10 |
Сенбернар
|
Цитата:
Сообщение от mazzy
![]() только через прямой запрос и ResultSet. со всеми вытекающими последствиями. это как правка реестра.
я даже классик для собственного удобства делал. https://github.com/mazzy-ax/SysResultSet см. пример использования https://github.com/mazzy-ax/SysResul...sultSet_AX.xpo ![]()
__________________
Best Regards, Roman |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|