0

私はsalesforce.comのAPEXでコードを書くのは初めてです。10個のフィールドを持つオブジェクト「UnProc」があり、それは「POPULATED」です。それぞれ5つのフィールドを持つ2つのオブジェクト(「アカウントと連絡先」)があり、これらのオブジェクトにデータを入力する必要があります。バッチapexとスケジューラを使用してAPEXコードを記述し、「アカウント」と「連絡先」の新しいレコードを作成して、「UnProc」にすでに存在するレコードを取得できるようにする必要があります。[アカウント]フィールドと[連絡先]フィールドにUnProcレコードが入力された後。UnProcレコードを削除する必要があります。

私はすでにsaleforce.comのバッチapexとスケジューラ関連のドキュメントを読み、それらのクラス構造を理解して作成しました。私が立ち往生しているのは、レコードの取得、作成などです。データベースは私の弱点であり、それが私がそれを乗り越えることができない理由です。疑似コードまたは数行のコードが役立つ場合があります。

4

1 に答える 1

2

通常、レコードは、SOQLを使用してApexコードでデータベースから取得されます。基本的な構文の概要はここにあります。

レコードはデータベースから取得され、基本的にフィールドのコレクションであるsObjectsとしてデータベースに返送されます。SOQLクエリは通常、次のようにsObjectのリストを返します。

list<UnProc__c> unProcs = [select accountField1__c, accountField2__c, ... contactField1__c, contactField2__c, ... contactField5__c from UnProc__c];

これらのレコードを取得したら、アカウントと連絡先のsObjectのリストを作成し、UnProcオブジェクトからフィールドに入力して、次のようにデータベースにコミットするだけで、新しいアカウントと連絡先のレコードを作成できます。

list<Account> accs = new list<Account>();
list<Contact> cons = new list<Contact>();
Account acc;
Contact con;
for(UnProc__c up : unProcs) {
    acc = new Account();
    con = new Contact();
    acc.field1 = up.accountField1;
    acc.field2 = up.accountField2;
    ...
    con.field1 = up.contactField1;
    con.field2 = up.contactField2;
    ...
    con.field5 = up.contactField5;
    accs.add(acc);
    cons.add(con);
}
database.insert(accs);
database.insert(cons);

Apexでは、単一の実行コンテキストで実行できるクエリとコミットの数に制限があるため、個別にではなく、レコードのコレクションでデータベースを取得してコミットする必要があります。

于 2012-05-31T14:04:52.170 に答える