我正在使用沙箱,我正在尝试自动更新自定义对象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行的错误消息
&#34;类型为String&#34;
的列的Schema.SObjectField的绑定表达式类型无效如何才能通过此错误并将此触发器投入生产并100%工作?我甚至需要Apex Class吗?
答案 0 :(得分:0)
要在创建或编辑成员供应商记录时更新供应商代表,您必须使用触发器。
解决此问题需要进行一些代码更改。出现错误消息的原因是您尝试将查找字段更新为字符串(&#34;名称&#34;字段)而不是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];
}
}
}
但代码不是批量化代码。为了使代码批量化,在for循环之外的SOQL查询使用for循环中的SOQL结果。