Показать сообщение отдельно
Старый 12.01.2011, 09:53   #1  
DesertBrowser is offline
DesertBrowser
Участник
 
55 / 10 (1) +
Регистрация: 04.08.2010
Объединение таблиц по Range-полю одной из них
Добрый день.
Подскажите, как можно решить следующую задачу.
В упрощённом варианте выглядит так:
есть 2 таблицы:
таблица Nums - номера
Num
Description

таблица NumGroups - группы номеров
GroupID
Amount
RangeNum - поле служит для связи между таблицами. Здесь задаются критерии, согласно которым группируются номера.

Также на форме пользователь также задаёт произвольный критерий отбора по полю Num с использованием стандартных символов (*, !, .. и т.п.) - UserRangeNum типа Range.
Каким должен быть Query, чтобы найти сумму по всем группам номеров, попадающих под условие, заданное пользователем? Можно ли сделать это одним запросом?
X++:
    query                               q = new Query();
    QueryRun                        qr;
    QueryBuildDataSource      qbds, qbds1;
    NumGroups                      numGroups;
    Range                              userRangeNum;
    ;
    qbds = q.addDataSource(tablenum(numGroups));
    qbds.addSelectionField(fieldnum(numGroups, Amount),SelectionField::Sum);
    qbds.orderMode(OrderMode::GroupBy);

    qbds1 = qbds.addDataSource(tablenum(nums));
    qbds1.fetchMode(0);
    qbds1.joinMode(JoinMode::ExistsJoin);
    qbds1.addRange(fieldnum(nums, num)).value(userRangeNum);
    //как добавить условие объединения таблиц - по полю критерия?
PS AX v 3.0