function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
suji srinivasansuji srinivasan 

hi, how to resolve illegal asiignment error from string to list in batch?

global class opptask implements Database.Batchable <sobject>{
      List <Account> acc = new List<Account>();
      
global Database.QueryLocator start(Database.BatchableContext bc) {
     List <Task> taskList = new List<Task>();
    string query = 'SELECT accountid FROM Task WHERE What.Type = Account AND CreatedDate = LAST_N_MONTHS:48';
      
     return Database.getQueryLocator(query);
      }
global void execute(Database.BatchableContext bc, List<Account> acclist) {
  acclist ='SELECT Id, Name FROM account WHERE Rating = Prospect AND Id NOT IN (SELECT accountid FROM Opportunity WHERE CreatedDate = LAST_N_MONTHS:48) AND Id NOT IN (taskList)';
         
  for (Account a : acclist) {
        a.Rating = dormant;
        }
   Update acc;
    }
    
    global void finish(Database.BatchableContext bc) {
        
    }
}
CharuDuttCharuDutt
Hii Suji
Try Below Code
global class opptask implements Database.Batchable <sobject>{
    public List <Account> acclist = new List <Account>();
    public List <string> taskList = new List<string>();
    global Database.QueryLocator start(Database.BatchableContext bc) {
        string query = 'SELECT accountid FROM Task WHERE What.Type = Account AND CreatedDate = LAST_N_MONTHS:48';
        
        return Database.getQueryLocator(query);
    }
    global void execute(Database.BatchableContext bc, List<Task> scope) {
        
        for(Task tsk : scope){
            taskList.add(tsk.whatId);
        }
        
        acclist = [SELECT Id, Name FROM account WHERE Rating = 'Prospect' AND Id NOT IN (SELECT accountid FROM Opportunity WHERE CreatedDate = LAST_N_MONTHS:48) AND Id NOT IN :taskList];
        
        for (Account a : acclist) {
            a.Rating = 'dormant';
        }
        Update acclist;
    }
    
    global void finish(Database.BatchableContext bc) {
        
    }
}
Please Mark It As Best Answer If It Helps
Thank You!
AnkaiahAnkaiah (Salesforce Developers) 
Hi Suji,

In the execute method, you need to pass task object instead of Account.
global void execute(Database.BatchableContext bc, List<Task> acclist) {
If this helps, please mark it as best answer.

Thanks!!