0

簡単に言うと、標準の連絡先のカスタムフィールドを更新する必要があります。これは、別の無関係なカスタムオブジェクトが更新された後に発生します。カスタムオブジェクトから連絡先にフィールド値を渡すトリガーを作成しようとしましたが、さまざまなエラーが発生し続けます。最新のエラーで困惑しています。Passing__c最終目標はから更新することPassing_Field__cです。

unexpected Token: "("回線でエラーが発生していますfor(Contact C:。それは文字通りとても単純で、私には理解できません。

これが私のコードです。命名規則を簡略化して、より関連性の高いものにしようとしています。どんな助けでも大歓迎です。私はApexとTriggersにかなり慣れていません、そして私はここ数時間これにいます、うまくいけば、いくつかのアドバイスが私を「ホームプレート」に送ることができます。

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はどちらもテキストボックスです。

4

1 に答える 1

2

問題はSOQLクエリのWHERE句にあると思います。

WHERE (AccountId = (Select Account__c from Custom_Object_Name__c ))

AccountIdSalesforceは、サブクエリの結果ではなく、ある種のIDと比較することを期待しています。あなたはおそらく次のようなことを試してみたいと思うでしょう:

WHERE (AccountId in (Select Account__c from  Custom_Object_Name__c))
于 2012-08-16T14:56:08.563 に答える