2013-12-17 2 views
1

Salesforce.com의 긴 텍스트 필드에서 줄 바꿈 수를 계산하는 트리거 및/또는 클래스를 만들고 싶습니다.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 버전을 사용하려면 API 버전을 업그레이드하면됩니다.

0

이 논리를 트리거로 변경한다고 가정합니다.

논리적으로는 분할이 작동하지만 대량 트랜잭션을 처리하기 위해 약간의 아키텍처를 재구성해야합니다. 가장 좋은 방법은 아마도 "업데이트 전 삽입하기 전에"를 사용하는 것입니다. 그런 다음 의사 코드는 다음과 같습니다

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

전에 사용하여, 당신은 실제로 명시 적으로 후속 당신이 Trigger.new의 요소에서 작업하는만큼 전화를 저장할 필요가 없습니다. 이 컨텍스트를 사용하면 두 개 이상의 Task가있는 트리거를 처리 할 수도 있습니다.

+0

100 % 정확하지 않고 '무료로 저장'은 '업데이트 전/삽입 전'문맥 인 경우에만 작동합니다. "after"컨텍스트에서 수정하려고하면 레코드가 지금 읽기 전용이라는 오류가 발생합니다. – eyescream

+0

@eyescream 나는 내가 언급 한 것 같지만, 내가 언급 한 다른 말은 아마도 꺼져 있었다. 같은 레코드에서 필드를 업데이트 할 때 "후"트리거를 사용하는 것은 의미가 없습니다. –

+0

아주 좋은 대답이지만이 응용 프로그램에서 코드를 크게 단순화하는 countMatches() 메서드에 관해 알려주려는 경우 눈썹에 procps를 주어야합니다. – user3112735