【问题标题】:Method does not exist or incorrect signature Database.executeBatch方法不存在或签名不正确 Database.executeBatch
【发布时间】:2020-09-05 13:30:44
【问题描述】:

我正在寻求帮助,弄清楚为什么这不起作用。

我不得不更改项目的 APEX 类名称。我修复了所有错误,但只有一个。

Error: Compile Error: Method does not exist or incorrect signature: void executeBatch(OriginalOpportunityAdSourceBatch, Integer) from the type Database at line 38 column 18

我不明白这个错误,因为唯一改变的是类名。

函数出错

public PageReference runAllOpps(){

        Database.executeBatch(new OriginalOpportunityAdSourceBatch(),batchSize);

        PageReference pr = new PageReference('/'+opp.id);
        pr.setRedirect(true);
        return pr;
    }

它正在调用的类

global class OriginalOpportunityAdSourceBatch {
  global Integer successCount = 0;
    global Integer errorCount = 0;
    global String errors = '';

    global Database.QueryLocator start(Database.BatchableContext bc) {
        return Database.getQueryLocator(
                'Select id, AdSourceOriginalBucket__c, Ad_Source__c, isClosed, isWon from Opportunity WHERE IsClosed = TRUE AND IsWon = TRUE'
        );
    }

    global void execute(Database.BatchableContext bc, List<Opportunity> scope){

        List<Database.SaveResult> srs = Database.update(OriginalOpportunityActions.ProcessAdSource(scope),false);

        for(Database.SaveResult sr:srs) {

            if(sr.isSuccess()) {
                successCount++;
            }
            else {
                errorCount++;
                errors += 'Opportunity Failed to Update. Record ID: ' + sr.getId();

                for(Database.Error er: sr.getErrors()) {
                    errors += er.message;
                }

                errors += '<br/>';
            }
        }

    }
    global void finish(Database.BatchableContext bc){

        String emailBody = 'Successful Updates: ' + successCount + ' Error Count: ' + errorCount;
        if(errors!='') {
            emailBody += ' -- ' + errors;
        }
        Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
        mail.setToAddresses(new String[]{UserInfo.getUserEmail()});
        mail.setReplyTo(UserInfo.getUserEmail());
        mail.setSubject('Batch Original Opportunity Update Completed');
        mail.setHTMLBody(emailBody);
        system.debug('emailBody -- ' + emailBody);
        if(!Test.isRunningTest()){Messaging.sendEmail(new List<Messaging.SingleEmailmessage>{mail});}
    }
}

任何帮助将不胜感激。

【问题讨论】:

    标签: salesforce


    【解决方案1】:

    您创建的类具有启动/执行/完成方法,但您可以随时更改它们。您需要“承诺”Salesforce,他们将永远在那里。

    您忘记在类声明中添加implements Database.Batchable&lt;sObject&gt;。修复它,然后使用这个类的代码应该编译。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 2014-11-06
      • 2016-03-20
      • 2013-06-29
      • 1970-01-01
      相关资源
      最近更新 更多