2009-10-02 81 views
5

有沒有一種有效的方法可以翻頁查看SOQL查詢的結果,而不必將所有查詢結果都帶回,然後丟棄大多數查詢結果?Salesforce API查詢的SOQL分頁

作爲示例,我希望能夠逐頁查看顯示10條記錄的完整聯繫人列表。我不需要根據任何特定領域進行排序。

+0

在Salesforce的想法網站存在與結合使用ID的討論領域排序並限制SOQL功能來遍歷結果。請參閱http://ideas.salesforce.com/article/show/10089030/SOQL_Request_allow_greaterthan_lessthan_WHERE_conditions_for_Id_fields – 2009-10-02 01:36:46

+0

這可能會導致我的業障,但我確實找到了在通用SOQL查詢上進行分頁的方法。我會分享代碼,但它是商業產品的一部分。我能做的最好的是分享鏈接,如果任何人有興趣 - http://www.fishofprey.com/2009/10/soql-pagination-for-salesforce-api.html。 – 2009-10-23 02:19:28

回答

7

目前最有效的解決方案,我發現可以通過合作伙伴API與任何SOQL查詢一起工作,是堅持從最初的QueryResult返回的sObjects和查詢定位器在當前結果之外請求頁面。

這需要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年夏季發佈

OFFSET is now GA(一般可用性?)

2

您可以使用自動編號字段在服務器端進行分頁。該字段可以在'order by'子句之後使用,它可以充當索引字段。

我已經完成了像你這邊的分頁。但是我又遇到了另一個問題,我不能同時在服務器端進行排序。因爲排序和分頁都需要在'order by'子句後添加列。