2013-12-17 174 views
1

我想創建一個觸發器和/或類來計算Salesforce.com中longtext字段中的換行數。Salesforce Apex:計算文本字段中換行符的數量

如果我將調試消息更改爲將commentsLength寫入自定義字段,此邏輯是否可以正常工作?

public with sharing class TaskCommentsCount { 
Integer commentsLength = 0; 

for(Task t : [Select Comments From Task]){ 
List<String> lines = t.Comments.split('\n'); 
commentsLength += lines.size(); 
} 

system.debug('Comments lines: ' + commentsLength); 

} 

回答

1

你的觸發器/類是幾歲?今年的一些時間(Spring'13發佈?)String類獲得重大升級,我們現在有countMatches()方法。

也許你只是需要升級API版本才能在觸發器中使用它。

0

我假設你會改變這個邏輯在觸發器中工作。

從邏輯上說,您的拆分應該可行,但您需要稍微重新構建它來處理批量交易。您最好的選擇可能是使用「插入之前,更新之前」。然後,你的僞代碼將是:

Loop over Trigger.new 
    Split on \n 
    Set comment_length field to size of collection 

使用之前,你實際上並沒有明確做出後續保存,只要撥打因爲你是在Trigger.new元素工作。此上下文還允許您處理具有多個任務的觸發器。

+0

不是100%準確的,「免費保存」只適用於「插入前/更新前」的情況。試圖在「上下文後」修改它會給你記錄現在只讀的錯誤。 – eyescream

+0

@eyescream我想我已經提到過,但也許我提到的其他東西是關閉的。在更新相同記錄中的字段時使用「之後」觸發器沒有意義。 –

+0

非常好的答案,但我必須給眼睛的道具告訴我有關countMatches()方法,這大大簡化了我的代碼在這個應用程序。 – user3112735

相關問題