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 に答える