簡體   English   中英

Apex觸發器從自定義對象更新聯系人

[英]Apex Trigger to Update Contact from Custom Object

簡而言之,我需要更新標准聯系人中的自定義字段,該字段會在更新其他不相關的自定義對象后觸發。 我試圖編寫一個觸發器,將字段值從我的自定義對象傳遞給聯系人,但我不斷收到各種錯誤 - 最近的錯誤讓我感到難過。 最終的目標是更新Passing__cPassing_Field__c

我得到一個unexpected Token: "(" for(Contact C:行)上的錯誤。字面上這么簡單,我無法弄明白。

這是我的代碼如下。 我已經簡化了命名約定,試圖讓它更具有相關性。 任何幫助表示贊賞。 我對Apex和觸發器都很陌生,而且我已經在這里工作了幾個小時,希望有些建議可以把我送到'本壘板'。

trigger ContactUpdater on Custom_Object_Name__c (after update) {

     List<Contact> updatedContacts = new List<Contact>();
     Set<Id> ObjectIds = new Set<Id>();
     Set<String> ObjectCont = new Set<String>();
     Set<Boolean> ObjectActive = new Set<Boolean>();
     Set<String> ObjectPass = new Set<String>(); 

     for(Custom_Object_Name__c p : trigger.new)
        {
            If(p.Active__c == true){ 
              ObjectIds.add(p.Id);
              ObjectCont.add(p.Contact__c);
              ObjectActive.add(p.Active__c);
              ObjectPass.add(p.Passing_Field__c);
              }

        try{ for(Contact c : [SELECT Id, Passing__c FROM Contact WHERE (AccountId IN (Select Account__c from  Custom_Object_Name__c )) AND ObjectActive = true])
              {
                 set(c.Passing__c = p.Passing_Field__c);
                 c.FieldToUpdate = c.Passing__c;
                 updatedContacts.add(c);
              }
             update updatedContacts; 

           }

            catch(exception e){
               throw e;
              }
        }
}

注意:Active__c是一個復選框。 Passing__c和Passing_Field__c都是文本框。

我相信問題出在您的SOQL查詢的WHERE子句中:

WHERE (AccountId = (Select Account__c from Custom_Object_Name__c ))

Salesforce希望您將AccountId與某種Id進行比較,而不是某些子查詢的結果。 你可能想嘗試類似的東西:

WHERE (AccountId in (Select Account__c from  Custom_Object_Name__c))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM