[英]Apex - Salesforce.com - I need help writing an APEX class to test my working trigger - Chatter - Monitor specific keywords
[英]Do I need an Apex Class or just a Trigger in order to update a lookup field in Salesforce?
我正在沙盒中工作,並且嘗試自動更新自定義對象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行的錯誤消息
“類型為String的列的Schema.SObjectField的無效綁定表達式類型”
我該怎么辦才能傳遞此錯誤並使此觸發器投入生產並可以100%工作? 我什至需要Apex課程嗎?
要在創建或編輯成員供應商記錄時更新供應商代表,您必須使用觸發器。
要解決此問題,需要進行一些代碼更改。 出現錯誤消息的原因是您正在嘗試將查找字段更新為String(“名稱”字段)而不是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結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.