Axapta 尝试使用AX查询对象仅加入firstonly

Axapta 尝试使用AX查询对象仅加入firstonly,axapta,dynamics-ax-2009,x++,Axapta,Dynamics Ax 2009,X++,我的要求是,客户希望输入一个日期范围(通常为一个月),并提取所有至少有一行过账在该日期范围内的总账日记账。例如,他们将在3月份发布1月份的期刊,并想知道哪些期刊有这些数据 其基本思想是将账本JournalTable转换为第一个唯一的账本JournalTrans。我对查询对象不是最好的。为什么我的查询不起作用?它将返回多个日志,而不是一个日志。我想我可以分组,然后就好了,但我想这会管用的 static void Job38(Args _args) { Query

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

其基本思想是将账本JournalTable转换为第一个唯一的账本JournalTrans。我对查询对象不是最好的。为什么我的查询不起作用?它将返回多个日志,而不是一个日志。我想我可以分组,然后就好了,但我想这会管用的

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));
    }
}
static void Job38(Args\u Args)
{
查询q;
QueryRun QueryRun;
querybuilddatasourceqbd;
QueryBuildDatasource qbd2;
QueryBuildRange-qbr;
会计科目表会计科目表;
;
信息(strfmt(“%1”,日期2STRXPP(STR2日期('10/01/2011',213));
q=新查询();
qbd=q.addDataSource(tablenum(LedgerJournalTable));
qbd2=qbd.addDataSource(tableNum(LedgerJournalTrans));
qbd2.关系(真实);
qbd2.firstOnly(真);
qbd2.joinMode(joinMode::InnerJoin);
qbr=qbd2.addRange(fieldNum(LedgerJournalTrans,TransDate));
qbr.价值(strfmt(‘(转换日期>%1)&(转换日期<%2)’,Date2StrXpp(str2date('10/01/2011',213)),Date2StrXpp(str2date('10/31/2011',213)));
queryRun=新queryRun(q);
while(queryRun.next())
{
ledgerJournalTable=queryRun.get(tableNum(ledgerJournalTable));
信息(strfmt(“%1”,ledgerJournalTable.JournalNum));
}
}

您是否尝试过JoinMode::ExistsJoin?

这使它能够正常工作。我希望我能做qbd2.firstonly(真的),它会工作的。