0

これは、すべての連絡先に HD 品質の注文があることを示すクエリです。

`Orderc__c[] orders = [SELECT id,customer__c, Customer__r.Number_of_HD_Orders__c,` `Quality_Code__c FROM Orderc__c where Quality_Code__c='HD'];`

次に、これらのコードを使用して、各連絡先の HD 注文数を更新します。

for(Orderc__c o: orders){
    if(o.Customer__r.Number_of_HD_Orders__c==null)
    o.Customer__r.Number_of_HD_Orders__c=0.0;
    o.Customer__r.Number_of_HD_Orders__c++;
}

さて、問題はどうすれば連絡先を更新できるかです。「注文の更新」として; 連絡先を更新しません。

4

1 に答える 1

0

すべての連絡先を新しいコレクションに追加してから、それを更新するだけです。

map<Id, Contact> contacts = new map<Id, Contact>();

for(Orderc__c o: orders) {
    if(o.Customer__r.Number_of_HD_Orders__c == null) {
        o.Customer__r.Number_of_HD_Orders__c=0.0;
    }

    Contact sContact = contacts.get(o.Customer__c);

    if(sContact != null) {
        sContact.Number_of_HD_Orders__c++;
    } else {
        o.Customer__r.Number_of_HD_Orders__c++;
        contacts.put(o.Customer__c, new Contact(id = o.Customer__c, Number_of_HD_Orders__c = o.Customer__r.Number_of_HD_Orders__c));
    }
}

update contacts.values();

これは非常に大雑把で、更新などであまりにも多くの連絡先をチェックしていないことに注意してください。しかし、正しい方向にあなたの考えを導くはずです!

于 2012-04-04T04:57:46.743 に答える