オブジェクトにレコードを挿入するApexコードを書きたい。
以下のApexコードで実現できます。
要件:
Apexで、取引先名(Name)が「Acme」、市区郡(請求先) (BillingCity)が「San Francisco」の取引先レコードを追加する。
sObject とは
Apexでレコード操作を行うにあたっては、sObject について理解しておく必要があります。
Salesforceでは「取引先 (Account)」「取引先責任者 (Contact)」「商談 (Opportunity)」などの各オブジェクトのことを総じて sObject と言い、それら sObject を表すデータ型が sObject型です。
例えば、「Account newAccount = new Account();」というコードは、取引先 (Account)オブジェクトの新しいインスタンスを newAccount という変数名で初期化するという意味になります。
サンプルコード(1)
//Account sObject型の newAccount を宣言し、Name項目とBillingCityに値を設定して初期化する
Account newAccount = new Account(Name='Acme', BillingCity='San Francisco');
//insert文で、newAccountのレコードを追加する
insert newAccount;
2行目:新しい Account オブジェクトのインスタンスを作成しています。このインスタンスの初期化の際に、オブジェクトのフィールドの値(Name と BillingCity)を同時に設定しています。
4行目:insert はApexのDML(Data Manipulation Language)操作の一つで、新しいレコードをSalesforceデータベースに追加するためのものです。 この insert ステートメントを実行することで、2行目で初期化された newAccount オブジェクトが実際の取引先レコードとしてSalesforceに保存されます。
DML (Data Manipulation Languate):
Salesforceオブジェクトに格納されているデータを操作するための操作セットです。レコードの作成、更新、削除、復元などを行うために使用します。DML操作の一部を紹介します。
⊳insert: 新しいレコードをデータベースに追加するための操作です。
例: insert account;
⊳update: 既存のレコードを更新するための操作です。
例: update account;
⊳ delete: データベースからレコードを削除するための操作です。
例: delete account;
⊳ upsert: レコードを挿入または更新する操作です。。指定したフィールドやIDに基づいて、レコードが既に存在する場合は更新し、存在しない場合は新規に作成します。
例: upsert account Account.Name; この例では、Account.Nameフィールドの値を基にレコードを更新または挿入します。
サンプルコード(2)
前のサンプルコードでは、Account オブジェクトのインスタンスの初期化と代入を同時に行っていました。
このサンプルは、初期化と代入を別々に行う例です。
//Account sObject型の newAccount を宣言する
Account newAccount = new Account();
//Name項目とBillingCityに値を設定する
newAccount.Name='Acme';
newAccount.BillingCity='San Francisco';
//insert文で、newAccountのレコードを追加する
insert newAccount;
2行目:新しい Account オブジェクトのインスタンスを作成しています。この新しいインスタンスはnewAccountという変数に代入されます。
4行目, 5行目:newAccountインスタンスのフィールドを設定しています。
newAccount.Name=’Acme’; は、取引先の名前 (Name フィールド) に “Acme” という値を設定する、という意味です。
7行目:最後に、insert DML操作を使用して、newAccount インスタンスをSalesforceデータベースにレコードとして保存しています。
サンプルコード(3)
複数のレコードを一括で挿入する場合には、sObject型のリストを作成し、そのリストを引数としてinsert ステートメントで一括挿入します。
//Account sObject型の空のリストを作成する
List<Account> accountList = new List<Account>();
//リストに3レコード追加する
//Name:'Acme1', 'Acme2', 'Acme3',BillingCity:'San Francisco'
for(Integer i=1; i<4; i++) {
Account a = new Account();
a.Name = 'Acme' + i;
a.BillingCity = 'San Francisco';
accountList.add(a);
}
//リストの3レコードをinsertする
insert accountList;
2行目:Account sObjectのインスタンスを保存するための空のリストaccountListを作成しています。
5行目~:forループを使用して3つのAccount sObjectのインスタンスを作成し、それらをaccountListに追加しています。
iの値が1から3まで変化するため、結果として’Acme1′, ‘Acme2’, ‘Acme3’の3つの異なる名前のAccountが作成されます。
すべてのAccountには、BillingCityとして’San Francisco’が設定されています。
12行目:accountListに含まれる3レコードをデータベースに追加しています。
以上です。
コメント