选择下一个1000

时间:2018-10-31 13:59:22

标签: select axapta x++ dynamics-ax-2012

在斧头里有一个关键词
firstOnly1000

可以像

那样使用
select firstonly1000 <ObjectName> where <where clause>

有没有一种方法可以选择下一个1000?我当时正在考虑使用 recid

select firstonly1000 <ObjectName> where <where clause> && Recid > maxof(firstonly1000.Recid) 

,但是在某些Ax版本中,Recid可以小于零。是否有一些合理的通用方法可以对所有Ax版本执行此操作?

1 个答案:

答案 0 :(得分:4)

我会拒绝。而且,如果您想进行某种分页,则可以使用query object (see link)或类似于以下X ++的东西,这几乎是常见的惯例。

while select salesTable
{
    i++;
    if (i>1000)
        break;
    info(strFmt("%1: %2", i, salesTable.SalesId));
}

// Less often used method below. Usually for a specific purpose.
select salesTable;
while (salesTable && i < 1000)
{
    i++;
    info(strFmt("%1: %2", i, salesTable.SalesId));

    next salesTable;
}

我认为完成RecId所要完成的工作的最简单方法是按RecId Asc进行排序,然后仅跟踪您选择的最后一个RecId而不是{{ 1}}。我认为,即使您随意在任何表上进行操作,也可能会导致性能下降。