10.07.2017, 15:10 | #1 |
Сенбернар
|
Having в Query - возможно ли и как, если возможно
Собственно, сабж:
- есть Query, построенный из кода, посредством QueryBuild* классов - очень хочется добавить условие а-ля Having Sum(zzz) > 123, но прямых путей для этого я не знаю. Если кто такой путь знает - прямой, либо даже кривой - очень обяжете советом
__________________
Best Regards, Roman |
|
10.07.2017, 15:13 | #2 |
северный Будда
|
Аксапта-то какая? В 2012 вроде можно строить квери по calculated fields (могу ошибаться, уже два года с ней не работал, но вроде так)
__________________
С уважением, Вячеслав |
|
10.07.2017, 15:27 | #3 |
Участник
|
Если Аксапта 2012я, то вместо программирования можно создать новый View с полем SumOfZzz (у поля свойство Aggregation = Sum), и в QueryBuild* использовать этот View.
|
|
10.07.2017, 15:33 | #4 |
Сенбернар
|
Цитата:
Ax 2009.
__________________
Best Regards, Roman |
|
10.07.2017, 15:35 | #5 |
Moderator
|
|
|
10.07.2017, 17:52 | #6 |
Участник
|
Цитата:
я даже классик для собственного удобства делал. https://github.com/mazzy-ax/SysResultSet см. пример использования https://github.com/mazzy-ax/SysResul...sultSet_AX.xpo Последний раз редактировалось mazzy; 10.07.2017 в 17:59. |
|
|
За это сообщение автора поблагодарили: alex55 (1). |
10.07.2017, 17:58 | #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)); } } |
|
11.07.2017, 11:00 | #8 |
Участник
|
Это можно сделать только в 2012. А топикстартеру нужно реализовать это в 2009.
__________________
// no comments |
|
12.07.2017, 08:28 | #9 |
Участник
|
Делайте выборку с условием из View2 имеющего в datasource ранее созданный View1 c GroupBy.
|
|
03.08.2017, 13:17 | #10 |
Сенбернар
|
Цитата:
Сообщение от mazzy
только через прямой запрос и ResultSet. со всеми вытекающими последствиями. это как правка реестра.
я даже классик для собственного удобства делал. https://github.com/mazzy-ax/SysResultSet см. пример использования https://github.com/mazzy-ax/SysResul...sultSet_AX.xpo
__________________
Best Regards, Roman |
|