一旦案例记录成案,如何访问案例记录。 (Email2Case)

时间:2011-11-29 14:30:37

标签: salesforce

我们已设置此流程以帮助确定案件的优先顺序。为此,我希望在通过电子邮件转发到案例后触发新的案例记录。然后查询它是否与帐户相关。如果是,我想返回一个值cScore。然后插入。

这是我到目前为止,它正在返回此错误:

  

错误:数据无效。查看下面的所有错误消息以更正您的   数据。 Apex触发newCaseScoring导致意外异常,   联系您的管理员:newCaseScoring:执行BeforeInsert   由以下原因引起:System.QueryException:List没有要分配的行   SObject:Trigger.newCaseScoring:第12行,第18列

这是我的代码:

在Case上触发newCaseTrigger(插入前){

if(Trigger.isInsert){
    List<Case> cList = [Select AccountId, Id, Priority_Score__c, Case_Priority_Score__c FROM Case WHERE Id IN :Trigger.new];
    List<Case> updateList = [Select AccountId, Id, Priority_Score__c, Case_Priority_Score__c FROM Case WHERE Id IN :Trigger.new];

    System.debug('This is the cList:' + cList);
    integer size;
    integer cnt=0;
    List<id> idList = New List<id>();
    for(Case cases : cList){

        idList.add(cases.AccountId);
        size = idList.size();
        System.debug('This is the idList:' + idList);
        System.debug('This is the size:' + size);       
        cnt++;
        System.debug(cnt);
    }
    List<Account> aList = [Select Id, Customer_s_Score_Total__c from Account where id =:idList];
    integer num;
    for(Id a : aList){
        for(Id b : idList){
            if(aList.Id == idList){
                num = aList.Customer_s_Score_Total__c;
                updateList.Priority_Score__c = num;
            }
        }
    }
} 

}

感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

第12行中的查询返回0条记录,因为Case还没有Id。由于您处于before insert触发器中,因此尚未提交案例。

我认为你想要做的是:

  1. 遍历Trigger.new中的案例并构建Case.AccountId值的List<Id>
  2. 使用上一步中的List<Id>对帐户进行查询。
  3. 再次遍历案例,更新Case_Priority_Score__c字段。
  4. 需要进行插入调用。您对案例记录所做的任何更改都将自动保存,因为您处于before insert触发器中。