1

我试图一次从 AX 获取一定数量的记录。我想执行相当于:

SELECT * FROM (SELECT *, ROW_NUMBER() AS ROWNO
FROM TableName) 
    AS TableName WHERE ROWNO > startIndex 
AND ROWNO <= endIndex;

目前,我正在从 AX 获取所有记录(使用 .net 业务连接器):

axRecord.ExecuteStmt("select * from %1");
i = 0;
while(axRecord.Found)
{
 if(i<startIndex)
 {
  i++;
  continue;
 }
 // Perform operations
 i++;
 if(i==endIndex)
 {
   break;
 }
}

仅使用业务连接器是否有更好的方法来做到这一点?请帮助

4

1 回答 1

1

在 X++ 的内部 SQL 语法中,有一些关键字 ( firstOnly, firstOnly10, firstOnly100, firstOnly1000) 来限制将获取的行数。它可以与RecId字段结合使用来手动获取模拟分页的行组:

select firstonly10 inventTable // only fetch 10 rows
    index hint ItemIdx
    where inventTable.RecId > lastRecIdFetched // save last recId for each page
       && inventTable.itemId == itemId;

您在 MSDN 上有完整的 select 语句语法参考:

http://msdn.microsoft.com/en-us/library/aa656402.aspx

于 2013-02-26T09:43:06.207 回答