尝试首先使用AX查询对象加入

时间:2012-03-22 16:57:30

标签: axapta dynamics-ax-2009 x++

我的要求是客户想要输入日期范围(通常是一个月)并提取在该日期范围内至少有一行发布的所有总帐日记帐。例如,他们将在3月份发布1月期刊,并想知道哪些期刊有这些数据。

基本的想法是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 个答案:

答案 0 :(得分:2)

您是否尝试过JoinMode::ExistsJoin