更新自定义对象时更新Multi-Picklist

时间:2012-08-31 12:11:16

标签: salesforce apex-code

我有自定义对象KeywordAccountAssociation__c。该对象有三个字段

  1. Account__c - Master-Detail(帐户)
  2. Keyword__c - Master-Detail(关键字)
  3. Compositecp__c - 文本(255)(外部ID)(唯一区分大小写)
  4. 我在帐户中有自定义字段

    • DD_Segment__c - 多选项列表

    现在,每当DD_Segment__c更新时,我想要更新{插入也很好'KeywordAccountAssociation__c值。我可以为此写出触发器,但我不知道怎么做?我是Salesforce Development的新手,我的背景是红宝石(因此习惯于顶点对我来说有点困难)。

    KeywordAccountAssociation__c有多行Account__c,其中包含相同的account_id,而且这些account_id与自定义对象Keyword__c的记录相关。我想获得与一个帐户相关的所有关键字,并在其(帐户的)多选择列表中进行更新。我怎样才能做到这一点?如果您对此有疑问,请询问。谢谢!

1 个答案:

答案 0 :(得分:1)

一个问题与学习使用触发器有关,一般可以使用Salesforce Apex Developer Documents on Triggers

开始

但要回答您的实际问题,您基本上需要针对更新相关帐户的自定义对象构建触发器。它可能看起来像这样:

trigger keywordAccountUpdate on KeywordAccountAssociation__c (after insert, after update){
    set<id> = new set<id>();
    for (KeywordAccountAssociation__c a : Trigger.new)
        accountIds.put(a.Account__c);
    map<id,Account> accountMap = new map<id,Account>([select id, DD_Segment__c from Account where id in :accountIds]);
    for (KeywordAccountAssociation__c kaa : Trigger.new){
        if (AccountMap.containskey(kaa.Account__c)){
            Account thisAccount = AccountMap.get(kaa.Account__c);
            String s = thisAccount.DD_Segment__c + ';new value'; // Always add value
            if ((thisAccount.DD_Segment__c).contains('second value')
                s += ';second value';
            AccountsToUpdate.add(new Account(id=thisAccount.id, DD_Segment__c = s));
        }
    }
}

请记住,我没有测试此触发器的结构,我只是免费提供它,所以YMMV。