배치 클래스를 사용하여 계정 레코드를 만들고 싶습니다.

배치 클래스를 사용하여 계정 레코드를 만드는 데 도움이 필요합니다.

global class batchClass implements Database.batchable<sObject>{ public String query; global Database.QueryLocator start(Database.BatchableContext BC){ return Database.getQueryLocator(Query); } global void execute(Database.BatchableContext info, List<Account> scope){ Account accsToUpdate=new Account(Name="ssa"); insert accsToUpdate; } global void finish(Database.BatchableContext info){ } } 

이렇게 시작했습니다. 잘못된 것임을 알고 있습니다. 어떻게해야하는지 알려주세요.

댓글

  • 당신 배치 분류를 사용하여 계정을 생성하려고합니다. 그래서 쿼리는 무엇입니까?
  • 아 보브 르 코드에 지쳤습니다. 레코드가 생성되지 않았습니다. 문제가 무엇인지 알고 싶습니다.
  • 이 배치 클래스를 어떻게 실행하고 있습니까? ?
  • 개발자 콘솔에서
  • batchClass bulkupdate = new batchClass (); database.executeBatch (bulkupdate);

Answer

사용할 레코드가없는 경우 이터 러블을 대신 사용할 수 있습니다. 다음은 이터 러블 기반의 예입니다.

public class CreateAccounts implements Database.Batchable<String> { public String[] start(Database.BatchableContext context) { return new String[] { "ssa" }; } public void execute(Database.BatchableContext context, String[] scope) { Account[] records = new Account[0]; for(String accountName: scope) { records.add(new Account(Name=accountName)); } insert records; } public void finish(Database.BatchableContext context) { } } 

적절한 데이터 구조를 결정하는 것은 사용자에게 달려 있습니다. . 요점은 쿼리가 일괄 처리 가능한 프로세스를 시작하는 유일한 방법이 아니라는 것입니다.

답변

Salesforce 확인 배치 클래스 Batch Apex

global class CreateAccountRecordsBatch implements Database.Batchable<sObject>{ global final String Query; global CreateAccountRecordsBatch(String q){ Query=q; } global Database.QueryLocator start(Database.BatchableContext BC){ return Database.getQueryLocator(query); } global void execute(Database.BatchableContext BC, List<Account> scope){ List<Account> accountList = new List<Account>(); for(Account acc : scope){ Account objA = new Account(Name = acc.Name); accountList.add(objA); } insert accountList; } global void finish(Database.BatchableContext BC){ } } //Execute Batch class from developer console // Query for 10 accounts String q = "SELECT Id, Name, Industry FROM Account LIMIT 10"; Id batchInstanceId = Database.executeBatch(new CreateAccountRecordsBatch(q), 5); 

Answer

다음은 배치 클래스별로 레코드를 생성 할 수있는 샘플 코드입니다.

 global class InsertAccountContact implements Database.Batchable<sObject>{ global InsertAccountContact(){ // Batch Constructor } // Start Method global Database.QueryLocator start(Database.BatchableContext BC){ // Generate your string query on any object here with limit 10000 String Query = "select id,name from account limit 2"; //Query is Required on object which you want to run Batch return Database.getQueryLocator(Query); } // Execute Logic global void execute(Database.BatchableContext BC, List<sObject>objlist){ system.debug(">>>>>>execute>>>>>"+objlist); List<Account> acclist = new List<Account>(); list<Contact> conlist = new list<contact>(); for(Sobject obj: objlist){ Account acc = new account(); acc.name = "Account_CreatedByBatchClass"; acclist.add(acc); } insert acclist; for(Account acc : Acclist){ Contact con = new Contact(); con.lastname = "Contact_CreatedByBatchClass"; con.accountid = acc.id; conlist.add(con); } Insert conlist; } global void finish(Database.BatchableContext BC){ // Logic to be Executed at finish } } 

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다