首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为了更新Salesforce中的查找字段,我需要一个Apex类还是一个触发器?

为了更新Salesforce中的查找字段,我需要一个Apex类还是一个触发器?
EN

Stack Overflow用户
提问于 2017-09-14 04:15:29
回答 1查看 554关注 0票数 0

我正在沙箱中工作,正在尝试自动更新自定义对象Member_Vendor_del__c下的Vendor_Rep__c(查找字段)。希望它在创建或编辑成员供应商记录时更新供应商代表。

我已经创建了visualforce页面,我开始相信我不再需要获取我需要的东西。

另外,在一些帮助下,我为Apex类创建了以下代码:

代码语言:javascript
运行
复制
public class contactsearch {

public List<Contact>searchContact(string ContactType, string MemberState, String VendorID)
{
  return [Select Name From Contact
          Where Contact_Type__c = 'Vendor Rep' AND States__c = :MemberState AND Contact_Vendor_ID__c = :VendorID limit 1];

    }
}

此外,在阅读了已经发布的几个问题、几篇Apex开发人员指南文章和一些教程视频之后,我创建了下面的触发器。(我甚至不确定我是否需要这个类来实现我需要的东西)

代码语言:javascript
运行
复制
trigger VendorRepUpdateTrigger on Member_Vendor_del__c (before insert, before update) {

 for (Member_Vendor_del__c u : trigger.new){
     if (u.Vendor_Rep__c == null){

        u.Vendor_Rep__c = [Select Name
                            From Contact
                            Where Contact_Type__c = 'Vendor Rep' AND States__c = :member_vendor_del__c.Member_State__c AND Contact_Vendor_ID__c = :member_vendor_del__c.Vendor_ID__c limit 1];

      }
   }
}

在触发器中,我一直收到下面第6行的错误消息

“对于字符串类型的列,绑定表达式类型Schema.SObjectField无效”

我该怎么做才能传递这个错误,并让这个触发器100%投入生产和工作?我甚至需要Apex类吗?

EN

回答 1

Stack Overflow用户

发布于 2017-09-14 12:09:02

要在创建或编辑成员供应商记录时更新供应商代表,您必须使用触发器。

要解决此问题,需要对代码进行一些更改。错误消息的原因是您正在尝试将查找字段更新为字符串(“Name”字段)而不是ID。

在您自己的代码上,如果您进行以下更改,我认为问题将得到解决。

代码语言:javascript
运行
复制
 trigger VendorRepUpdateTrigger on Member_Vendor_del__c (before insert, before update) {
     for (Member_Vendor_del__c u : trigger.new){
         if (u.Vendor_Rep__c == null){

             u.Vendor_Rep__c = [Select Id
                                From Contact
                                Where Contact_Type__c = 'Vendor Rep' AND
                                States__c = :u.Member_State__c AND 
                                Contact_Vendor_ID__c = :u.Vendor_ID__c limit 1];

           }
      }
  }

但代码不是bulkify代码。为了使您的代码块化,在for循环外部执行SOQL查询,在for循环内使用该SOQL结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46206145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档