Попытка присоединиться в первую очередь, используя объект запроса AX - PullRequest
1 голос
/ 22 марта 2012

Мой запрос заключается в том, чтобы клиент захотел ввести диапазон дат (обычно месяц) и извлечь все журналы Главной книги, в которых по крайней мере одна строка размещена в этом диапазоне дат. Например, они опубликуют журналы в марте за январь и захотят узнать, какие журналы имеют эти данные.

Основная идея - LedgerJournalTable для первого только LedgerJournalTrans. Я не лучший с объектом запроса. Почему мой запрос не работает? Он возвращает несколько журналов вместо одного. Я думал, что могу сгруппироваться и быть в порядке, но я думаю, что это сработает.

static void Job38(Args _args)
{
    Query                   q;
    QueryRun                queryRun;
    QueryBuildDatasource    qbd;
    QueryBuildDatasource    qbd2;
    QueryBuildRange         qbr;
    LedgerJournalTable      ledgerJournalTable;
    ;

    info(strfmt("%1", date2strxpp(str2date('10/01/2011', 213))));

    q = new Query();
    qbd = q.addDataSource(tablenum(LedgerJournalTable));
    qbd2    = qbd.addDataSource(tableNum(LedgerJournalTrans));
    qbd2.relations(true);
    qbd2.firstOnly(true);
    qbd2.joinMode(JoinMode::InnerJoin);
    qbr = qbd2.addRange(fieldNum(LedgerJournalTrans, TransDate));
    qbr.value(strfmt('(TransDate > %1) && (TransDate < %2)', Date2StrXpp(str2date('10/01/2011', 213)), Date2StrXpp(str2date('10/31/2011', 213))));

    queryRun = new QueryRun(q);

    while (queryRun.next())
    {
        ledgerJournalTable = queryRun.get(tableNum(LedgerJournalTable));

        info(strfmt("%1", ledgerJournalTable.JournalNum));
    }
}

1 Ответ

2 голосов
/ 22 марта 2012

Вы пробовали JoinMode::ExistsJoin?

...