har brug for din hjælp til at oprette kontopost ved hjælp af batchklasse ,,
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){ } }
Jeg startede sådan, jeg ved, at det er forkert, fortæl mig hvad jeg skal gøre,
Kommentarer
- dig ønsker at oprette konto ved hjælp af batchklasse. så hvad er forespørgslen?
- Jeg er træt af den ovennævnte kode ,,, posten er ikke oprettet, jeg vil gerne vide, hvad der er problemet der
- Hvordan udfører du denne batchklasse ?
- fra udviklerkonsollen
- batchClass bulkupdate = ny batchClass (); database.executeBatch (bulkupdate);
Svar
Hvis du ikke har nogen poster at bruge, skal du kan bruge en iterabel i stedet. Her er et iterabaseret eksempel:
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) { } }
Det er op til dig at bestemme, hvordan den relevante datastruktur ser ud Hovedpointen er, at en forespørgsel ikke er den eneste måde at starte en batchbar proces på.
Svar
Kontroller Salesforce Dokument til udførelse af batchklasse 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);
Svar
Nedenfor er prøvekoden, hvormed du kan oprette poster efter batchklasse.
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 } }