Apex触发器 - Trailhead

时间:2015-07-23 14:47:09

标签: triggers salesforce apex apex-trigger

代码本身不会出现任何错误,但无论何时我运行它,Trailhead都会给我这样的信息:

  

“挑战尚未完成......这里有什么不对:    执行触发器没有按预期工作。 “

以下是说明:

对于此挑战,您需要创建一个触发器,在插入或更新之前,检查复选框。如果复选框字段为true,则将Shipping Postal Code(其API名称为ShippingPostalCode)设置为与Billing Postal Code(BillingPostalCode)相同。

  • 必须调用Apex触发器AccountAddressTrigger
  • 帐户对象需要一个新的自定义复选框,其中应包含字段标签“匹配帐单地址”和字段名称Match_Billing_Address。生成的API名称应为Match_Billing_Address__c
  • 如果AccountAddressTrigger处于有效状态,如果某个帐户有结算邮政编码且Match_Billing_Address__c为真,则该记录应设置为在插入或更新时匹配的装运邮政编码。

我的代码:

trigger AccountAddressTrigger on Account (before insert,before update) {

    for(Account a : [SELECT Id FROM Account WHERE  Match_Billing_Address__c = TRUE AND BillingPostalCode != NULL])
    {
        a.ShippingPostalCode = a.BillingPostalCode;
        update a;        
    }//end for     
}

4 个答案:

答案 0 :(得分:1)

您的触发器就像这样。

trigger AccountAddressTrigger on Account (before insert,before update) {

    //Iterate all accounts that is updated or inserted.
    for(Account acc :Trigger.New){
        //if match is true set values.
        if(acc.Match_Billing_Address__c){
            acc.ShippingPostalCode = acc.BillingPostalCode;
        }
    }
}

答案 1 :(得分:1)

在帐户上触发AccountAddressTrigger(在插入之前,在更新之前){

    for(Account a : Trigger.new){
    If (a.Match_Billing_Address__c == true && a.BillingPostalCode!=Null) {
        a.ShippingPostalCode = a.BillingPostalCode;
    }   
} 

}

答案 2 :(得分:0)

首先需要在“帐户”标签中创建名称为“匹配帐单地址”的复选框字段,然后打开开发人员控制台并编写代码并保存。最后在您的salesforce实例中检查其是否正常工作

这是代码:

在帐户上触发accountAddressTrigger(在插入之前,在更新之前){

for(Account acct : trigger.new){

      if(acct.Match_Billing_Address__c == true)

      acct.ShippingPostalCode = acct.BillingPostalCode;
      }

}

答案 3 :(得分:0)

对象上触发Name_of_Trigger(事件1,事件2){

   for(Each Object's Event1/Event2) {
       if (Check box is selected) {
               Assign Billing address to Shipping address (i.e using '=' operator);
                                 }
                      }

}