-1

当用户单击案例以更改案例所有者/用户时,我必须将此用户添加到所有关联案例(每个客户)。我正在使用下面的代码,但它只更新一个记录/案例。我可以在调试日志中看到所有案例都使用最新所有者进行了更新,但并未真正更新/存储在 caseObject 中。请帮帮我。

    trigger caseAssignment on Case (after insert, after update) {

      set<id> ownerId = new Set<Id>();
      set<id> customerId = new set<Id>();
    for(Case caseobj : trigger.new){

            ownerId.add(caseobj.OwnerId); 
            customerId.add(caseobj.AccountId);
    }


for( User user:[Select id, FirstName, LastName from user where Id IN  :ownerId]){   

    for(Case cas : [Select Id, OwnerId, First_Name__c, CaseNumber, AccountId From Case where AccountId IN: customerId]){        

        cas.OwnerId = user.Id;

    }  


}
4

2 回答 2

0

假设您编写的逻辑是正确的,您永远不会更新案例

trigger caseAssignment on Case (after insert, after update) 
{

    Set<Id> ownerId = new Set<Id>();
    Set<Id> customerId = new Set<Id>();
    List<Case> casesToUpdate = new List<Case>();

    for(Case caseobj : trigger.new)
    {
        ownerId.add(caseobj.OwnerId); 
        customerId.add(caseobj.AccountId);
    }


    for( User user:[Select id, FirstName, LastName from user where Id IN  :ownerId])
    {   
        for(Case cas : [Select Id, OwnerId, First_Name__c, CaseNumber, AccountId From Case where AccountId IN: customerId])
        {        
            Case c = new Case();
            c.ID = cas.ID;
            c.OwnerId = user.Id;
            casesToUpdate.add(c);
        }  
    }

    update casesToUpdate;
}
于 2017-03-15T17:58:34.080 回答
0

如果没有更新 DML 语句,您的代码将不会影响您的数据。

可能应该创建一个更新列表

即列表 updateCaseList = new list()

然后在您的内部 for 循环中,将“cas”添加到 updateCaseList,然后在方法结束时发出更新命令(更新 updateCaseList)。

于 2017-03-01T21:50:27.863 回答