2017-12-22 2 views
0

「name = SampleAccountOne」で20レコードを作成しました。私は20のレコードに特定の連絡先を追加するバッチクラスを作成しようとしています。シンタックスとどこに行くのか。適切な方向への助けがあれば幸いです。バッチクラス連絡先をアカウントに追加します

global class UpdateProjectNameBatch implementsDatabase.Batchable<sObject> { 
    List<Contact> conList = new conList<Contact>(); 
    String query = 'Select Id,Name FROM Account WHERE Name = \'SampleAccountOne\'' 

    global Database.QueryLocator start(Database.BatchableContext bc){ 
    return Database.getQueryLocator(query); 
    } 

    global void execute(Database.BatchableContext bc,List<sObject> batch){ 
    for(Contact c : conList){ 
     batch.c = 'New Contact Name'; 
    } 
    } 

    global void finish(){ 

    } 
} 

答えて

0

複数のアカウントに1つの連絡先を関連付けようとしていると思います。この機能はSpring 16'でリリースされ、Salesforce Junctionオブジェクト(AccountContactRelation)を通じて実装されています。

この機能は既にUIで有効になっており、この連絡先の親アカウントが宣言されているものとします。

連絡先を20のすべてのアカウントに関連付けるようにコードを変更しました。

global class UpdateProjectNameBatch implements Database.Batchable 
    <sObject> 
    { ID conId = '0037F00000IfCCKQA3'; //Add the contact Id here 
    List<AccountContactRelation> ListInsertion = new List<AccountContactRelation>(); 
    String query = 'Select Id,Name FROM Account WHERE Name = \'SampleAccountOne\''; 

    global Database.QueryLocator start(Database.BatchableContext bc) 
    { 
    return Database.getQueryLocator(query); 
    } 

    global void execute(Database.BatchableContext bc,List<Account> batch){ 

     for (Account a : batch) 
     { 
      AccountContactRelation c = new AccountContactRelation(); 

      c.AccountId = a.id; 
      c.contactId = conId; 
      ListInsertion.add(c); 
     } 


    Insert ListInsertion; 

    } 

    global void finish(Database.BatchableContext bc) 
    { 
    //DoNothing. 
    } 
} 
関連する問題