2013-03-12 86 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); 
. 
. 
.