【问题标题】:Apex Batch Class to update Contact field from custom object fieldApex 批处理类从自定义对象字段更新联系人字段
【发布时间】:2023-04-01 04:54:01
【问题描述】:

我有一个顶点批处理类,我需要根据相关自定义对象字段的状态更新联系人布尔字段“Active_Subscriptions__c”。

自定义对象“Subscriptions__c”有一个“Contact__c”主从字段,还有一个“IsActive__c”布尔字段。

我想运行一个批处理,以查找与按 ID 的联系人记录相关的任何订阅。如果它发现任何活动订阅,则需要将联系人记录上的“Active_Subscriptions__c”设置为 true,否则设置为 false。

我对 apex 还很陌生,似乎无法触发我需要的结果,提前致谢。

global class BatchContactUpdate implements Database.Batchable<sObject>{

    List <Subscription__c> mapSubs = new List <Subscription__c> ();
    List <Contact> contactlist = new List <Contact> ();

    global Database.QueryLocator start(Database.BatchableContext BC) {
        return DataBase.getQueryLocator([SELECT Id, Contact__c FROM Subscription__c WHERE Contact__c =:contactlist]);
    }

    global void execute(Database.BatchableContext BC , List <Subscription__c> mapSubs) {
        for (Subscription__c sub : mapSubs){ 
            for (Contact con : contactList){

                if (con.Id == sub.Contact__c && sub.IsActive__c == true){
                        contactlist.add(new Contact(
                            Active_Subscriptions__c = true
                           ));
                    } else {

                        contactlist.add(new Contact(
                            Active_Subscriptions__c = false
                           ));

                    }

            }   
       }

         update contactlist;
    } 

    global void finish(Database.BatchableContext BC){

    }

}

【问题讨论】:

    标签: salesforce apex-code apex


    【解决方案1】:

    看起来您的联系人列表一开始是空的,所以它不会返回任何结果。但是对于您的查询,您为什么不做类似的事情

    [SELECT Id, (SELECT Id FROM Subscriptions__r WHERE Is_Active__c = true) FROM Contact];
    

    在你的执行中做

    List<Contact> cList = new List<contact>();
    for(Contact c : scope){
       c.Active_Subscriptions__c = c.Subscriptions__r.size() > 0;
       cList.add(c);
    }
    //etc... to start
    

    【讨论】:

    • 效果很好,真的很简单,谢谢。
    猜你喜欢
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    相关资源
    最近更新 更多