in

Apex

Salesforce

Vietnam Offshore

Where条件のバリデーション

ワークフロー、プロセスビルダーのように条件分をバリデートするためにApexのトリッキーで実現できました。

String inputString = '(1 AND 2) OR 3'; //例
String regex = '[a-zA-Z()]{1,}|\\-';
String inputStringWithoutText = inputString.replaceAll(regex, ''); //条件分に含まれる数字以外をスペースで置き換える
String [] arr=inputStringWithoutText.split(' ');
for(String el : arr){
if(el.trim().isNumeric()){
inputString = inputString.replace(el.trim(),'Name=\'abc\''); //動的SOQLのWhere分を作成
}
}
System.debug('Select Name from Account where ' + inputString + 'limit 0' );
System.debug(Database.query('Select Name from Account where ' + inputString )); //try/catchで
動的SOQLを実行してみて例外が起きなければ入力条件分が正しく判断できます。

Happy Coding

0

Leave a Reply

Your email address will not be published. Required fields are marked *