簡體   English   中英

是否需要Apex類或僅觸發器即可更新Salesforce中的查找字段?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM