0

这是一个查询,它将让我所有的联系人都有高清质量的订单。

`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'];`

然后我更改使用这些代码来更新每个联系人的高清订单数:

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 回答