我正在沙箱中工作,正在尝试自动更新自定义对象Member_Vendor_del__c下的Vendor_Rep__c(查找字段)。希望它在创建或编辑成员供应商记录时更新供应商代表。
我已经创建了visualforce页面,我开始相信我不再需要获取我需要的东西。
另外,在一些帮助下,我为Apex类创建了以下代码:
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开发人员指南文章和一些教程视频之后,我创建了下面的触发器。(我甚至不确定我是否需要这个类来实现我需要的东西)
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类吗?
发布于 2017-09-14 12:09:02
要在创建或编辑成员供应商记录时更新供应商代表,您必须使用触发器。
要解决此问题,需要对代码进行一些更改。错误消息的原因是您正在尝试将查找字段更新为字符串(“Name”字段)而不是ID。
在您自己的代码上,如果您进行以下更改,我认为问题将得到解决。
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结果。
https://stackoverflow.com/questions/46206145
复制相似问题