当前位置: 首页 > 知识库问答 >
问题:

Apex触发器从自定义对象更新联系人

杜建章
2023-03-14

长话短说,我需要在我的标准联系人中更新一个自定义字段,该字段在更新一个不同的、不相关的自定义对象后触发。我曾试图编写一个触发器,将字段值从自定义对象传递给联系人,但我不断收到各种错误,其中最近的一个错误让我感到困惑。最终目标是从Passing\u Field\uu c更新Passing\uu c。

我收到了一个意外的标记:“(”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\uu c是一个复选框。Passing\u c和Passing\u Field\uu c都是文本框。

共有1个答案

范华清
2023-03-14

我相信问题出在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))
 类似资料:
  • 我想寻求一些帮助。我是APEX的新手,我面临的问题是APEX触发器似乎是一个解决方案。我需要Salesforce中的一个触发器,该触发器将使用Staff对象(自定义对象)的值from Holidays Remaining字段更新位于Users对象(standard对象)中的字段。换言之,应将员工剩余假期中填充的内容复制到名为“用户剩余假期”的字段中。谁能帮我一下吗?

  • 我创建了一个触发器,当创建或更新特定帐户记录类型时,该触发器将自动创建联系人。问题是,我不确定如何填充联系人“帐户名”查找字段。此字段是对Account对象的查找。我的代码如下。如果您有任何关于如何集成此缺失组件的帮助,我们将不胜感激。 在帐户上触发autoCreate联系人(更新后,插入后){List new联系人=new List();

  • 我有一个简单的触发器,当我的自定义对象上的SD_Action__c字段为某个值时,它应该会创建一个新机会。代码没有错误,但是当我尝试在沙盒或生产中更新字段时不会发生任何事情。当时,我错过了什么来使这个机会变得伟大? 这是我的测试课:

  • 代码本身没有给出任何错误,但每当我运行它时,Trailhead都会给我以下消息: “挑战尚未完成……问题是:执行触发器没有按预期工作。” 以下是说明: 对于此质询,您需要创建一个触发器,在插入或更新之前检查复选框。如果复选框字段为true,则会将发货邮政编码(其API名称为ShippingPostalCode)设置为与帐单邮政编码(BillingPostalCode)相同。 Apex触发器必须调用

  • 我有一个名为Player的自定义对象的ArrayList。ArrayList显示在一个RecyclerView中--它工作得很好。我在RecolyerAdapter中为每个TextView添加了一个onClick,传递我的ArrayList、单击的列和单击的行--工作也很好。 我在第二个活动的onCreate方法中创建我的ArrayList spielerArrayList,从主活动获取名称(Ar

  • userNotesTable: 用户提醒表: 插入触发器: 更新触发器: 这是数据库的当前代码,以及提醒表的特定触发器。我遇到的困难是,从提醒表中的specific中的user notes表中选择特定的名称和额外的内容,所有这些都在更新触发器中。 插入时,和会被插入到提醒和搜索表中,但我希望能够使用特定名称和用户注释表中的额外内容更新搜索表,这可能吗?