Apex StandardSetController クラスの使い方

環境
Salesforce

書式
List<account> 変数名 = [SELECT Name FROM Account LIMIT 20];
ApexPages.StandardSetController apss = new ApexPages.StandardSetController(変数名);

操作例
1. インスタンス作成
sObjects のリストを使用してインスタンスを作成する
サンプルコード

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
List<account> accList = [SELECT Name FROM Account LIMIT 20];
ApexPages.StandardSetController apss = new ApexPages.StandardSetController(accList);
List<account> accList = [SELECT Name FROM Account LIMIT 20]; ApexPages.StandardSetController apss = new ApexPages.StandardSetController(accList);
List<account> accList = [SELECT Name FROM Account LIMIT 20];
ApexPages.StandardSetController apss = new ApexPages.StandardSetController(accList);

2.インストタンスの状態を変える
//1セットに格納するレコード数を指定
apss.setPageSize(5);

//次のレコードセットに切替
apss.Next();

3.クエリロケータを使用してインスタンスを作成する

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ApexPages.StandardSetController ssc =
new ApexPages.StandardSetController(Database.getQueryLocator([SELECT Name,CloseDate FROM Opportunity]));
ApexPages.StandardSetController ssc = new ApexPages.StandardSetController(Database.getQueryLocator([SELECT Name,CloseDate FROM Opportunity]));
ApexPages.StandardSetController ssc =
new ApexPages.StandardSetController(Database.getQueryLocator([SELECT Name,CloseDate FROM Opportunity]));

注意事項

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
StandardSetController のレコード数の上限は 10,000 件です。10,000 件を超えるレコードを返すクエリロケータを使用して StandardSetController をインスタンス化すると、
LimitException が発生します。ただし、10,000 件を超えるレコードのリストを使用して StandardSetController をインスタンス化すると、例外が発生する代わりに、
レコードが上限まで切り捨てられます。
StandardSetController のレコード数の上限は 10,000 件です。10,000 件を超えるレコードを返すクエリロケータを使用して StandardSetController をインスタンス化すると、 LimitException が発生します。ただし、10,000 件を超えるレコードのリストを使用して StandardSetController をインスタンス化すると、例外が発生する代わりに、 レコードが上限まで切り捨てられます。
StandardSetController のレコード数の上限は 10,000 件です。10,000 件を超えるレコードを返すクエリロケータを使用して StandardSetController をインスタンス化すると、
LimitException が発生します。ただし、10,000 件を超えるレコードのリストを使用して StandardSetController をインスタンス化すると、例外が発生する代わりに、
レコードが上限まで切り捨てられます。

 

Apex

Posted by arkgame