2009-10-02 4 views
5

Есть ли эффективный способ публикации результатов из SOQL-запроса без возвращения всех результатов запроса и последующего отбрасывания большинства из них?SOQL Pagination для запросов API Salesforce

В качестве примера я хотел бы иметь возможность просматривать полный список контактов, отображающих 10 записей за раз. У меня нет необходимости сортировать по какой-либо конкретной области.

+0

На идеи сайта Salesforce есть обсуждение, используя поле Id в сочетании с упорядочивать и ограничивать функциональность SOQL для просмотра результатов. См. Http://ideas.salesforce.com/article/show/10089030/SOQL_Request_allow_greaterthan_lessthan_WHERE_conditions_for_Id_fields –

+0

Это, вероятно, приведет к плохой карме с моей стороны, но я выяснил, как сделать разбиение на страницы поверх общих запросов SOQL. Я бы поделился кодом, но он является частью коммерческого продукта. Лучшее, что я могу сделать, это поделиться ссылкой, если кому-то интересно - http://www.fishofprey.com/2009/10/soql-pagination-for-salesforce-api.html. –

ответ

7

В настоящее время наиболее эффективным решением, которое я нашел, которое будет работать с любым SOQL-запросом через API-интерфейс партнера, является сохранение объектов sObjects, возвращаемых из исходного QueryResult, и локатор запросов, если страница запрашивается за пределами текущих результатов.

Для этого необходим уровень поддержки поискового вызова поверх Salesforce QueryResult.

I.e. Когда страница запрашивается sObjects может потребоваться от:

  • тока (кэшированных) QueryResult
  • последующего QueryResult, которые могут быть выбраны с помощью локатора запросе
  • предварительного QueryResult
  • Некоторые комбинации всех три.

Если страница охватывает два (или более) QueryResults, необходимо создать искусственный QueryResult со всеми необходимыми записями.

Обновление весны 2012 года выпуск

Похоже, есть новая функция приходит, что добавит OFFSET поддержки SOQL. Например.

SELECT Name FROM Merchandise__c WHERE Price__c > 5.0 ORDER BY Name LIMIT 50 OFFSET 100 

См Spring '12 Force.com Platform Release - OFFSET added to SOQL (Pilot)

Обновление для лета 2012 Release

OFFSET is now GA (General Availability?)

2

Вы можете использовать автоматическое число, указанное для разбиения на страницы на стороне сервера. это поле можно использовать после предложения «по порядку», оно может действовать как поле индекса.

Я сделал разбивку на страницы, как то, что вы. но у меня другая проблема, я не могу сортировать серверную сторону одновременно. потому что сортировка и разбиение на страницы нужно добавить столбец после предложения «по порядку».

 Смежные вопросы

  • Нет связанных вопросов^_^