0
다음은 모든 연락처에 HD 품질 주문이 포함 된 쿼리입니다. 하위 쿼리 필드를 업데이트하는 방법은 무엇입니까? salesforce, soql, apex
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++;
}
지금, 문제는 내가 연락처를 업데이트 할 수 있습니다 방법입니다
`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의 주문 번호를 업데이트하려면 다음 코드를 사용하여 변경할 수 있습니다. "업데이트 명령;" 연락처를 업데이트하지 않습니다. 등의 업데이트에 너무 많은 연락처를 확인하지 않습니다,
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();
참고이 매우 거친이지만 :
감사합니다. 그러나 귀하의 코드는 오류를 일으킬 것입니다 : 목록에 중복 ID. 왜 목록에 중복 ID를 허용하지 않는지 모르겠다. 나는 이것이 몇몇 접촉에 의하여 원인이 다수 HD 순서가다는 것을 생각한다. 그래서 내가 어떻게 고칠 수 있니? –
연락처를지도에 추가하기 전에 목록 대신지도를 사용하여지도에 이미 있는지 확인하십시오. 그럴 경우 해당 값을 증가시키고, 그렇지 않으면 추가하십시오. 그런 다음 맵의 값을 업데이트하면됩니다 : update mymap.values ();' –
nvm, 연락처에 연락처를 추가 한 다음 목록에 세트를 추가하기 만하면됩니다. 목록을 업데이트하십시오. DML은 목록이 설정되지 않은 경우에만 작동합니다. –