You need to sign in to do that
Don't have an account?
batch class is not working
I write this batch class to update Campaigns with certains criteria and to delete their CAmpaign Member with certains criteria. But is not working!
global class CampaignMemberDeleteBatch implements Database.Batchable<sObject>{ global Database.QueryLocator start(Database.BatchableContext BC){ //return Database.getQueryLocator('Select Id, Status, IsProcessed__c,IsActive,(Select Id,LeadId,ContactId,IsProcessed__c from CampaignMembers) from Campaign Where IsProcessed__c = true AND Status=\'Completed'); return Database.getQueryLocator('Select Id, Status, IsProcessed__c,IsActive,(Select Id,LeadId,ContactId,IsProcessed__c from CampaignMembers) from Campaign Where IsProcessed__c = true AND Status=\'Completed'); } global void execute(Database.BatchableContext BC,List<Campaign> scope){ List<Campaign>campaignToUpdate = new List<Campaign>(); List<CampaignMember> memberToDelete = new List<CampaignMember>(); for(Campaign campaign : scope){ campaign.IsActive = false; campaignToUpdate.add(campaign); for(CampaignMember member : campaign.campaignMembers){ if((member.LeadId!=null || member.ContactID!=null) && member.IsProcessed__c ==true){ memberToDelete.add(member); } } } update campaignToUpdate; //update IsActive field delete memberToDelete; //delete Database.emptyRecycleBin(memberToDelete); //hard delete } global void finish(Database.BatchableContext BC){ } }
I think you needed to use more quotes in the query. Try this