2017.05.23

Apexクラス拡張の演算子を極める!!

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

みなさま明けましておめでとうございます!

年末に原宿に出かけたのですが、原宿駅に少女漫画風パスワード啓発ポスターが貼られているのを見かけました。

とっても斬新なポスターで一度見たらなかなか忘れませんね。♪( ´▽`)

今の時代パスワードの使い回しはとっても危険ですがパスワードには 英数字だけではなくプログラムの演算子に使用する記号を用いるのも一般的になりました。

というわけで....

今回のブログでは演算子やります!!!

SkyVisualEditorではApexクラス拡張機能で演算子を利用することで 作ったページをお好みの絞り込み条件で表示させることができます!

この記事では演算子を深掘りしていこうと思います☆☆☆

*サンプルで作成するSkyVisualEditorで作成した画面イメージ

項目の文字や数字が一致しているか調べる時に使用する演算子

  • EQ 次の文字列と一致する
  • NE 次の文字列と一致しない。

この二つは、一番多く利用する演算子だと思いますね。

特定の文字と一致するかどうかを判定します。

文字であっても数値であっても利用可能です。

ユースケースとして、主オブジェクトのチェックボックス項目(acc.IsCustomerPortal)がfalseだった場合、 子供のチェックボックス項目(SE2Template01__Field2__c)との一致を見て「一致しているものだけ」(SkyEditor2.WhereOperator.EQ)を表示するというコードを書きました。

global with sharing class SVE_RH_201610061200Extender extends SkyEditor2.Extender{
    public SVE_RH_201610061200Extender(SVE_RH_201610061200 extension){

        if( ApexPages.currentPage().getParameters().get('id') == '' || 
            ApexPages.currentPage().getParameters().get('id') == null )
        {
                SkyEditor2.Messages.addErrorMessage('id is none');
        }

        if (extension.record != null && extension.record.Id != null) {

           List &lt Account &gt accounts = [SELECT Name,IsCustomerPortal FROM Account WHERE Id = :extension.record.Id];
           Account acc = accounts.get(0);

            //データテーブル(TargetsTable)からクエリ取得
            SkyEditor2.Query tableQuery = extension.queryMap.get('TargetsTable');
            //'AND'句と'('を付与
            tableQuery.addWhereIfNotFirst('AND');
            tableQuery.addWhere('(');

            //条件:一致する
            //SE2Template01__Field2__cはデータテーブルの取引先チェックです。
            tableQuery.addWhere('SE2Template01__Field2__c',acc.IsCustomerPortal, SkyEditor2.WhereOperator.EQ);

            //')'を付与
            tableQuery.addWhere(')');
            //put
            extension.queryMap.put('TargetsTable',tableQuery);

        }
    }
}

数値項目を比較して大きいか小さいか比較する演算子

  • LT A < B の場合、Bの数値がAよりも大きい場合、正とします。
  • GT A > B の場合、Bの数値がAよりも小さい場合、正とします。
  • LE A <= B の場合、Aの値とBの値が同値かBの値がAの値より大きい場合、正とします。
  • GE A >= B の場合、Aの値とBの値が同値かBの値がAの値より小さい場合、正とします。

通貨型、売り上げ等、数値に対して利用することが一般的な演算子です。

ユースケースとして親項目の年間売上よりも、年間売上が多い小項目のデータテーブルのレコードを表示する方法を書きました。

global with sharing class SVE_RH_201610061200Extender extends SkyEditor2.Extender{
    public SVE_RH_201610061200Extender(SVE_RH_201610061200 extension){

        if( ApexPages.currentPage().getParameters().get('id') == '' || 
            ApexPages.currentPage().getParameters().get('id') == null )
        {
                SkyEditor2.Messages.addErrorMessage('id is none');
        }

        if (extension.record != null && extension.record.Id != null) {

               //ヘッダ情報取得
           List &lt Account &gt accounts = [SELECT Name,AnnualRevenue FROM Account WHERE Id = :extension.record.Id];
            Account acc = accounts.get(0);

             //データテーブル(TargetsTable)からクエリ取得
            SkyEditor2.Query tableQuery = extension.queryMap.get('TargetsTable');
            //'AND'句と'('を付与
            tableQuery.addWhereIfNotFirst('AND');
            tableQuery.addWhere('(');

            //条件:SE2Template01__Field11__cよりもacc.AnnualRevenueの値が高い場合
            //SE2Template01__Field11__cはデータテーブルの売上項目です。
            tableQuery.addWhere('SE2Template01__Field11__c',acc.AnnualRevenue, SkyEditor2.WhereOperator.GT);

            //')'を付与
            tableQuery.addWhere(')');
            //put
            extension.queryMap.put('TargetsTable',tableQuery);

        }
    }
}

項目の文字列の中の文字を調べたい時に利用する演算子

  • CO 次の文字列を含む
  • NC 次の文字列を含まない
  • SW 次の文字列で始まる

文字列の部分一致を行うための演算子です。 例えば電話番号の頭の局番、「03」 から始まる取引先だけをデータテーブルで表示させたい場合はSW(次の文字列を含む)を活用するとうまくできます。

global with sharing class SVE_RH_201610061200Extender extends SkyEditor2.Extender{
    public SVE_RH_201610061200Extender(SVE_RH_201610061200 extension){

        if( ApexPages.currentPage().getParameters().get('id') == '' || 
            ApexPages.currentPage().getParameters().get('id') == null )
        {
                SkyEditor2.Messages.addErrorMessage('id is none');
        }

        if (extension.record != null && extension.record.Id != null) {

             //データテーブル(TargetsTable)からクエリ取得
            SkyEditor2.Query tableQuery = extension.queryMap.get('TargetsTable');
            //'AND'句と'('を付与
            tableQuery.addWhereIfNotFirst('AND');
            tableQuery.addWhere('(');

            //条件:前方一致
            //03から始まる電話番号を取得します。
            tableQuery.addWhere('Phone','03', SkyEditor2.WhereOperator.SW);

            //')'を付与
            tableQuery.addWhere(')');
            //put
            extension.queryMap.put('TargetsTable',tableQuery);

        }
    }
}

    複数選択リストの値を調べる時に利用する演算子

    • inc 次の値を含む
    • ex 次の値を含まない

    もっとも難解なのが、incとexだと思われます。 この二つの演算子は、複数選択リストの項目を利用する場合使用します。 また、複数選択リストの値で「A社」、「B社」とあった場合、その二つの値を含む 項目を表示させるにはセミコロン(;)で区切ります。

    例として、複数選択リストの項目(SE2Template01__Field10__c)の値に「A社」、「B社」 があるレコードを表示させるサンプルを書きました。

    global with sharing class SVE_RH_201610061200Extender extends SkyEditor2.Extender{
        public SVE_RH_201610061200Extender(SVE_RH_201610061200 extension){
    
            if( ApexPages.currentPage().getParameters().get('id') == '' || 
                ApexPages.currentPage().getParameters().get('id') == null )
            {
                    SkyEditor2.Messages.addErrorMessage('id is none');
            }
    
            if (extension.record != null && extension.record.Id != null) {
    
                 //データテーブル(TargetsTable)からクエリ取得
                SkyEditor2.Query tableQuery = extension.queryMap.get('TargetsTable');
                //'AND'句と'('を付与
                tableQuery.addWhereIfNotFirst('AND');
                tableQuery.addWhere('(');
    
                //条件:複数選択リストのSE2Template01__Field10__cに[A社][B社]があるものを取得します
    
              tableQuery.addWhere('SE2Template01__Field10__c','A社;B社', SkyEditor2.WhereOperator.INC); 
                //')'を付与
                tableQuery.addWhere(')');
                //put
                extension.queryMap.put('TargetsTable',tableQuery);
    
            }
        }
    }
    
      以上、SkyVisualEditorで扱うことのできる演算子です。

      これらを活用して、皆様が今年も素晴らしいSkyVisualEditorライフを送れますように!(^_^)

    1 件

    関連する記事