Salesforce检查值是否更改(触发器处理程序)

时间:2014-05-07 22:31:56

标签: triggers salesforce apex-code

我正在尝试检查帐户字段是否已从特定值更改。

如果旧帐户的标记为“打开”且新帐户标记未打开

然后执行一些检查。

private void doCheck(map<Id, Account> oldAccounts, map<Id, Account> newAccounts){
   List<Account>newList= new List<Account>();
    List<Account>oldList= new List<Account>();

    oldList= oldAccounts.values();
    newList= newAccounts.values();

 //check if old account flag changed from "open" 
}

1 个答案:

答案 0 :(得分:0)

private void doCheck(map<Id, Account> oldAccounts, map<Id, Account> newAccounts){

    for(Id i : oldAccounts.keyset()){
       Account old = oldAccounts.get(i).Flag__c;
       if(old.Flag__c == 'Open' && old.Flag__c != newAccounts.get(i).Flag__c){
          // do your magic here
       }
    }
}

如果你要为此运行一些查询 - 你不应该在循环中进行查询。您在其中放置ID并稍后对该集合中的所有帐户ID运行查询的帮助Set<Id>可能是最好的想法......很难说您到底需要什么。

来自keyset()集合的get(someKey)Map方法在Apex帮助中进行了描述:http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_map.htm#apex_System_Map_methods