0
長話短說,我需要在我的標準跟更新自定義字段,一個不同的,不相關的自定義對象後,大火被更新聯繫。我試着寫,從我的自定義對象的聯繫通過字段值觸發,但我不斷收到各種錯誤 - 其中最近已經難倒我。最終目標是從Passing_Field__c
更新Passing__c
。頂點觸發更新來自定義對象
我就for(Contact C:
線得到一個unexpected Token: "("
錯誤。這實際上很簡單,我無法弄清楚。
這是我的代碼如下。我簡化了命名約定,試圖讓它更加可靠。任何幫助表示讚賞。我很新的頂點和觸發器,和我已經在這了幾個小時了,希望一些建議可以送我去「本壘板」。
trigger ContactUpdater on Custom_Object_Name__c (after update) {
List<Contact> updatedContacts = new List<Contact>();
Set<Id> ObjectIds = new Set<Id>();
Set<String> ObjectCont = new Set<String>();
Set<Boolean> ObjectActive = new Set<Boolean>();
Set<String> ObjectPass = new Set<String>();
for(Custom_Object_Name__c p : trigger.new)
{
If(p.Active__c == true){
ObjectIds.add(p.Id);
ObjectCont.add(p.Contact__c);
ObjectActive.add(p.Active__c);
ObjectPass.add(p.Passing_Field__c);
}
try{ for(Contact c : [SELECT Id, Passing__c FROM Contact WHERE (AccountId IN (Select Account__c from Custom_Object_Name__c)) AND ObjectActive = true])
{
set(c.Passing__c = p.Passing_Field__c);
c.FieldToUpdate = c.Passing__c;
updatedContacts.add(c);
}
update updatedContacts;
}
catch(exception e){
throw e;
}
}
}
注意:Active__c是一個複選框。傳遞___c和傳遞_場___c都是文本框。
我已更新上面的代碼以反映我當前的版本。 'IN'運算符代替'='修正了這個錯誤,但似乎我有一個更基本的錯誤。它不承認'p.Passing_Field__c」作爲一個變量,這使我相信我沒有正確地引用Custom_Object_Name__c。聯繫人'選擇'從我可以告訴的是確定的,但如果自定義對象沒有正確調用,則全部爲無。有任何想法嗎?我會嘗試重新設定它的設置。 – CDD 2012-08-16 16:49:05
語法縮進是通過我一點,但你的p變量只在for循環的上下文中有效。在for循環之外,p變量不在範圍內,所以這可能是你得到錯誤的原因。 – 2012-08-16 17:02:05
有趣。我改變了括號{},以包含TRY在'for(Custom_Object_Name__c p:trigger.new)'中。不過,我已經將ObjectPass聲明爲一個字符串,並且已將'Passing_Field__c'添加到字符串中。當我開始設置(c.Passing__c = p.Passing_Field__c);'時,我得到了「從SET到字符串的非法分配」。看起來好像你不能用字段值覆蓋字符串的值,就像我試圖做的那樣。有沒有更好的方法將'Passing_Field__c'帶入觸發器,而不使用字符串? –
CDD
2012-08-16 17:25:10