Attualmente la soluzione più efficiente che ho trovato che funzionerà con qualsiasi query SOQL tramite l'API del partner è quella di mantenere gli oggetti SObjects restituiti dal QueryResult iniziale e il localizzatore di query in caso di richiesta di una pagina al di fuori dei risultati correnti.
Ciò ha richiesto un livello di supporto di paging in cima a Salesforce QueryResult.
I.e. Quando viene richiesta una pagina sObjects può essere richiesto da:
- La corrente (cache) QueryResult
- Un QueryResult successivo che può essere recuperata utilizzando la query localizzatore
- Una prima QueryResult
- una combinazione di tutti tre.
Se la pagina si estende su due (o più) QueryResults, è necessario creare un QueryResult artificiale con tutti i record richiesti.
Aggiornamento per la primavera 2012 di uscita
Sembra che ci sia una nuova funzionalità venire che aggiungerà il supporto a OFFSET SOQL. Per esempio.
SELECT Name FROM Merchandise__c WHERE Price__c > 5.0 ORDER BY Name LIMIT 50 OFFSET 100
Vedi Spring '12 Force.com Platform Release - OFFSET added to SOQL (Pilot)
Aggiornamento per l'estate 2012 di rilascio
OFFSET is now GA (disponibilità generale?)
fonte
2010-06-01 01:16:15
Sul sito Salesforce Ideas si discute di utilizzare il campo ID in collaborazione con il ordina e limita la funzionalità SOQL per sfogliare i risultati. Vedi http://ideas.salesforce.com/article/show/10089030/SOQL_Request_allow_greaterthan_lessthan_WHERE_conditions_for_Id_fields –
Questo probabilmente porterà a un brutto karma da parte mia, ma ho trovato un modo per fare l'impaginazione oltre alle query SOQL generiche. Condividerei il codice, ma fa parte di un prodotto commerciale. Il meglio che posso fare è condividere un link se qualcuno è interessato - http://www.fishofprey.com/2009/10/soql-pagination-for-salesforce-api.html. –