2013-03-12 57 views
0

好吧,所以我在几周前问过这个问题,我得到了一些很好的帮助 - 但我仍然不是100%,关于我一直存在的问题......任何帮助都会很棒... 我仍然有这个代码的主要问题,并可以使用一些更多的帮助...Salesforce APEX更新为空

由于某些原因,它仍然将任何数字更改为0,而不仅仅是将0添加到空字段。

如果我有4个LOC在以下方面 - 竞争对手出售率 150,125,0,空白或空 丢失 假,真,真,假 我希望它们都被标记失落,我只希望最后的竞争者出售率被标记0

目前,所有标志丢失,所有更改为0 - 我知道代码的功能更新,因为如果我修改代码,说让他们10他们都更新到10

请任何帮助将是美好的...

上的机会(更新之后){

//The map allows us to keep track of the opportunities that have been lost 

地图oppsWithStageLost =新地图

触发updateLOConLostOpportunity();

for (Integer i = 0; i < Trigger.new.size(); i++) { 
    if ( (Trigger.old[i].StageName != 'Lost') 
     && (Trigger.new[i].StageName == 'Lost')) { 
     oppsWithStageLost.put(Trigger.old[i].id, 
           Trigger.new[i]); 

    }       
} 
List<Line_of_Coverage__c> updatedLOCs = new List<Line_of_Coverage__c>(); 
for (Line_of_Coverage__c loc : [SELECT id, Lost__c, Opportunity__c 
            FROM Line_of_Coverage__c 
            WHERE Opportunity__c 
            in :oppsWithStageLost.keySet()]) { 
    Opportunity parentOpp = oppsWithStageLost.get(loc.Opportunity__c); 


    loc.Lost__c = TRUE; 

    if (loc.Competitor_Sold_Rate__c == NULL) { 

     loc.Competitor_Sold_Rate__c = 0; 

    } 


    updatedLOCs.add(loc); 

} 
update updatedLOCs;           

}

回答

0

到底是什么Competitor_Sold_Rate__c的类型?如果它是一个字符串或一个选择列表,它可能永远不会被设置为null - 你可能会有更好的结果比较它与空字符串''。

1

添加Competitor_Sold_Rate__c选择查询

for (Line_of_Coverage__c loc : [SELECT id, Lost__c, Opportunity__c,Competitor_Sold_Rate__c 
            FROM Line_of_Coverage__c 
            WHERE Opportunity__c 
            in :oppsWithStageLost.keySet()]) 
0

原谅我,如果我没有正确认识这个问题,但如果我是你想要的出售率= 0只为最后一个元素,你可以试试这个。另外就像提到的其他职位,您将不得不在竞争对手中包含Competitor_Sold_Rate__c

List<Line_of_Coverage__c> updatedLOCs = new List<Line_of_Coverage__c>(); 
list<Line_of_coverage__c> locs = [SELECT id, Lost__c, Opportunity__c, Competitor_Sold_Rate__c 
           FROM Line_of_Coverage__c 
           WHERE Opportunity__c 
           in :oppsWithStageLost.keySet()]; 

for (Integer i = 0; i < locs.size(); i++) { 
    Opportunity parentOpp = oppsWithStageLost.get(locs[i].Opportunity__c); 
    loc.Lost__c = TRUE; 

    //check if it's the last loc -- size would return 4 
    if (loc.Competitor_Sold_Rate__c == NULL && locs.size()-1 == i) { 
    loc.Competitor_Sold_Rate__c = 0; 
} 

updatedLOCs.add(loc); 
. 
. 
. 
相关问题