Выберите следующую 1000 - PullRequest
       7

Выберите следующую 1000

0 голосов
/ 31 октября 2018

В топоре есть ключевое слово
firstOnly1000

Который можно использовать как

select firstonly1000 <ObjectName> where <where clause>

Есть ли способ, как сделать выбор из следующих 1000? Я думал об использовании recid и

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

но в некоторых версиях Axid Recid может быть меньше нуля. Есть ли какой-нибудь разумный общий способ сделать это для всех версий Axe?

1 Ответ

0 голосов
/ 31 октября 2018

Я бы сказал нет. И если вы хотите сделать какое-то разбиение на страницы, вы можете использовать объект запроса (см. Ссылку) или что-то похожее на приведенный ниже 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, который вы выбрали вместо maxOf. Я думаю, что вы можете получить плохую производительность, если бы вы просто произвели это произвольно на любом столе.

...