0

わかりましたので、数週間前にこの質問をしたところ、大きな助けがありました - しかし、私が抱えている問題に関しては、まだ 100% ではありません...どんな助けも素晴らしいでしょう...このコードには大きな問題があり、さらに助けが必要です...

何らかの理由で、null フィールドにゼロを追加するだけでなく、数値を 0 に変更しています。

次の 4 つの LOC がある場合 - 競合他社の売却率 150、125、0、空白または Null 紛失 False、True、True、False それらすべてを紛失とマークし、最後の競合他社の売却率のみを 0 とマークしたい

現在、すべてが失われ、すべてが0に変更されています-コードを変更して10にするように変更すると、すべてが10に更新されるため、コードが更新されることがわかります

どんな助けでも素晴らしいでしょう...

オポチュニティで updateLOConLostOpportunity をトリガーする (更新後) {

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

Map oppsWithStageLost = new Map();

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;                                          

}

4

3 に答える 3

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()])
于 2013-03-12T20:41:53.020 に答える
0

Competitor_Sold_Rate__c のタイプは正確には何ですか? 文字列またはピックリストの場合、特に null に設定されることはありません。空の文字列 '' と比較すると、より良い結果が得られる場合があります。

于 2013-03-12T19:20:34.457 に答える
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);
.
.
.
于 2013-03-15T05:47:30.877 に答える