intra-mart Accel Platform ViewCreator 管理者操作ガイド 第41版 2026-01-30

4.1. 抽出条件の設定

「クエリ編集」画面、およびリスト集計の「データ参照編集」画面では、レコードの抽出条件を設定できます。

リスト集計の「検索設定」は、データ参照を閲覧するユーザが目的の情報に素早く辿り着くための機能ですが
それに対して「抽出条件」は、ユーザに見せたくない情報を設定者側であらかじめ絞っておくための機能です。

4.1.1. クエリ作成時に抽出条件を設定する

「クエリ編集」画面の「抽出条件一覧」タブからレコードの抽出条件を設定します。
../../_images/apply_guide_1_1.png
図:クエリ編集画面 - 抽出条件

項目名 説明
WHERE句直接入力
抽出条件を設定する代わりに適用するWHERE句を入力します。
動的パラメータを埋め込むことも可能です。
OR検索
複数の抽出条件が設定された場合に OR 条件でデータ抽出を行います。
チェックが外されている場合は AND 条件が適用されます。
上へ下へ 抽出条件の順序を入れ替えます。
テーブル/ビュー/リソース デザイナに追加されているエンティティを選択可能です。
カラム/フィールド
抽出条件の対象とするカラムを選択します。
「テーブル/ビュー/リソース」で選択されたエンティティが持つカラムを選択可能です。
抽出方法 部分一致、範囲指定などの抽出方法を指定します。
条件値 固定の条件値だけでなく、カレントのユーザコードなどの動的に変化する値を指定することも可能です。
削除 抽出条件一覧からカラムを削除します。

4.1.1.1. 抽出条件を直接入力する

複雑な条件式を設定したい場合は抽出方法を「直接入力」にします。
直接入力が選択されると、算術演算子の挿入が行われないため演算子を適宜入力してください。

../../_images/apply_guide_1_4.png
図:クエリ編集画面 - 直接入力

WHERE句直接入力にチェックを入れることで、WHERE句そのものを直接記述することも可能です。
../../_images/apply_guide_1_5.png
図:クエリ編集画面 - WHERE句直接入力

注意

直接入力を使用する場合は、テーブルやレコードを壊すことの無いように細心の注意を払ってください。

4.1.2. データ参照作成時に抽出条件を設定する

リスト集計のデータ参照作成時に、「データ参照編集」画面からレコードの抽出条件を設定します。
クロス集計とグラフ集計では設定できません。
../../_images/apply_guide_1_2.png
図:データ参照作成画面 - 抽出条件

項目名 説明
追加 抽出条件を追加します。
「削除」アイコン 抽出条件一覧からカラムを削除します。
「上へ下へ」アイコン 抽出条件の順序を入れ替えます。
集合関数
抽出パターンを指定します。
リスト集計で設定可能なのは「1レコード単位」のみです。
対象カラム
抽出条件の対象とするカラムを選択します。
選択可能なカラムが表示されます。
抽出方法 部分一致、範囲指定などの抽出方法を指定します。
条件値 固定の条件値だけでなく、カレントのユーザコードなどの動的に変化する値を指定することも可能です。

コラム

「1レコード単位」以外の抽出パターンは、サマリ集計を選択している場合のみ設定可能です。

SQL上では、下記のように適用されます。
1レコード単位 : WHERE句
集合関数 : HAVING句

注意

リスト集計の「抽出条件」では、OR検索は設定できません。

4.1.3. データ参照時のSQL

データ参照が閲覧されたときに発行されるSQLは次のような構造です。
SELECT

   [データ参照編集画面で表示されているカラム一覧]

FROM

   ( SELECT

       [クエリに追加されたカラム一覧]

     FROM

       [クエリに追加されたテーブル]

     WHERE

       [クエリで設定された抽出条件]

   ) IM__QUERY__

WHERE

   [データ参照で設定された抽出条件]

データベースの実装に依存しますが、一般的にはクエリの段階でデータを絞っておいた方がSQLの実行速度は良くなる傾向にあります。
ただし、1つのクエリを共有して複数のデータ参照を作成し、抽出条件はデータ参照ごとに設定した方が良いケースもあるので、適宜使い分けて設定してください。

4.1.4. 動的パラメータ

抽出条件の値には固定値だけでなく動的に変化する値などの特別な値をセットすることも可能です。

../../_images/apply_guide_1_3.png
図:クエリ編集画面 - 抽出条件

../../_images/apply_guide_1_3_1.png
図:データ参照編集画面 - 抽出条件

4.1.4.1. <%DYNAMIC_PARAMETER%>

API経由でパラメータ値をセットする場合に使用します。

このパラメータが設定された抽出条件が1つでも存在するクエリからは、データ参照を作成できません。

詳しくは、jp.co.intra_mart.foundation.viewcreator.model.Query#executeを参照してください。

4.1.4.2. <%ENCODING%>

SQL実行時のログインユーザに関連づけられたエンコーディング文字列がセットされます。

4.1.4.3. <%LOCALE%>

SQL実行時のログインユーザに関連づけられたロケール文字列がセットされます。

4.1.4.4. <%NOT_NULL%>

IS NOT NULL がセットされます。

※このパラメータを選択した場合は、必ず「抽出方法」で「完全一致」を選択してください。

4.1.4.5. <%NULL%>

IS NULL がセットされます。

※このパラメータを選択した場合は、必ず「抽出方法」で「完全一致」を選択してください。

4.1.4.6. <%SYSTEM_DATE(*)%>

SQL実行時のシステム日付がセットされます。

システム日付データを指定されたフォーマットに従った、文字列がセットされます。

文字列で生成された日付データは、データベースごとに用意された型変換関数に渡されます。

※このパラメータは、必ず日付型またはタイムスタンプ型のカラムに対してセットしてください。

コラム

  • <%SYSTEM_DATE%>で、1時間前、前日などの指定をする
パラメータ<%SYSTEM_DATE(yyyy/MM/dd HH:mm)%>は、実行時のシステム日付がセットされますが
フォーマット文字列部分に、+演算子や-演算子を用いた記述が可能です。

  • システム日付の1時間前をセットしたい場合

<%SYSTEM_DATE(yyyy/MM/dd HH-1:mm)%>

  • システム日付の前日をセットしたい場合

<%SYSTEM_DATE(yyyy/MM/dd-1 HH:mm)%>

※演算子には、+と-のみ使用できます。

※演算子の前後にスペースは入れないようにしてください。

4.1.4.7. <%USER_ID%>

SQL実行時のログインユーザコードがセットされます。

4.1.4.8. <%REQUEST_PARAMETER(KEY_NAME)%>

HttpServletRequest(リクエスト)、または、RenderRequest(ポートレットのリクエスト)から取得した値がセットされます。取得される優先順位は、HttpServletRequestが優先されて取得されます。

「KEY_NAME」にはパラメータ名を指定します。

コラム

  • <%REQUEST_PARAMETER(KEY_NAME)%>の使用例
  1. 検索設定の場合


    タグが受け取る引数として、リクエストパラメータのキー名を任意に指定します。
    ここでは例として「都道府県名」の検索値として渡す値のリクエストパラメータのキー名を param としています。
    ../../_images/apply_guide_1_6_1.png

    データ参照を表示した際に指定したリクエストパラメータを受け取ることができます。
    例では、以下のようなURLにアクセスすることで「都道府県名」の検索値として「島」を指定した際と同じ結果を表示しています。

    .../viewcreator/dataview/list/{dataview_cd}?param=島
    ../../_images/apply_guide_1_6_2.png
  2. 抽出条件の場合


    タグが受け取る引数として、リクエストパラメータのキー名を任意に指定します。
    ここでは例として「地域名」の抽出条件値として渡す値のリクエストパラメータのキー名を region 、「都道府県名」のキー名を pref としています。
    ../../_images/apply_guide_1_6_3.png

    データ参照を表示した際に指定したリクエストパラメータを受け取ることができます。
    例では、以下のようなURLにアクセスすることで「地域名」の抽出条件値として「関東」、「都道府県名」の抽出条件値として「東京」を指定した際と同じ結果を表示しています。

    .../viewcreator/dataview/list/{dataview_cd}?region=関東&pref=東京
    ../../_images/apply_guide_1_6_4.png
  3. ポートレットで利用する場合

    メニューから「サイトマップ」→「ポータル - ポートレット一覧」を選択します。
    編集アイコンをクリックし、「ポートレット編集」画面を開きます。
    基本設定のページ引数に抽出条件で設定したタグのキー名を指定します。
    ../../_images/apply_guide_1_6_5.png

    「ポートレット編集」画面のページ引数で指定したリクエストパラメータを受け取ることができます。
    ../../_images/apply_guide_1_6_6.png

4.1.4.9. <%REQUEST_PARAMETER_VALUES(KEY_NAME)%>

HttpServletRequest(リクエスト)、または、RenderRequest(ポートレットのリクエスト)から取得した同名の複数パラメータを配列として取得し、カンマ区切りの値としてセットされます。取得される優先順位は、HttpServletRequestが優先されて取得されます。

「KEY_NAME」にはパラメータ名を指定します。

複数選択のチェックボックスや複数選択リストなどで送信される値を一括でIN句に利用する場合に使用します。

コラム

  • クエリビルダのWHERE句直接入力と抽出方法「直接入力」、SQLビルダで利用可能です
  • 該当するリクエストパラメータが存在しない場合は「NULL」に変換されます
  • 最大1000個までの要素を処理します

コラム

<%REQUEST_PARAMETER_VALUES(KEY_NAME)%> は2025 Autumn(Lilac)から利用可能です。

コラム

使用例

基本的な使用例

複数の文字列値をIN句で指定する場合:

SELECT * FROM imm_user WHERE user_cd IN (<%REQUEST_PARAMETER_VALUES(userCdList)%>)

リクエストパラメータとSQL変換

リクエストパラメータ「userCdList=aoyagi&userCdList=ueda&userCdList=harada」が送信されると、以下のSQLが実行されます:

SELECT * FROM imm_user WHERE user_cd IN ('aoyagi', 'ueda', 'harada')

空文字の処理

空文字は無視されます。

リクエストパラメータ「userCdList=aoyagi&userCdList=&userCdList=ueda」が送信された場合:

SELECT * FROM imm_user WHERE user_cd IN ('aoyagi', 'ueda')

4.1.4.10. <%REQUEST_PARAMETER_NUMBER_VALUES(KEY_NAME)%>

HttpServletRequest(リクエスト)、または、RenderRequest(ポートレットのリクエスト)から取得した同名の複数パラメータを数値配列として取得し、カンマ区切りの数値としてセットされます。取得される優先順位は、HttpServletRequestが優先されて取得されます。

「KEY_NAME」にはパラメータ名を指定します。

数値の複数選択や範囲指定などで送信される値を一括でIN句に利用する場合に使用します。

コラム

  • クエリビルダのWHERE句直接入力と抽出方法「直接入力」、SQLビルダで利用可能です
  • 該当するリクエストパラメータが存在しない場合や、数値変換できる値がない場合は「NULL」に変換されます
  • 数値変換できない値は無視され、警告ログが出力されます
  • 最大1000個までの要素を処理します

コラム

<%REQUEST_PARAMETER_NUMBER_VALUES(KEY_NAME)%> は2025 Autumn(Lilac)から利用可能です。

コラム

使用例

基本的な使用例

複数の数値をIN句で指定する場合:

SELECT * FROM imm_user WHERE sort_key IN (<%REQUEST_PARAMETER_NUMBER_VALUES(sortKeys)%>)

リクエストパラメータとSQL変換

リクエストパラメータ「sortKeys=1&sortKeys=2&sortKeys=3」が送信されると、以下のSQLが実行されます:

SELECT * FROM imm_user WHERE sort_key IN (1, 2, 3)

データ変換の処理

数値変換できない値や空文字は無視されます。

リクエストパラメータ「sortKeys=1&sortKeys=&sortKeys=abc&sortKeys=2」が送信された場合:

SELECT * FROM imm_user WHERE sort_key IN (1, 2)

4.1.4.11. <%TIME_ZONE_ID%>

  • ログインユーザのタイムゾーンIDがセットされます。下記の様にパラメータを追加することで、他の種類のタイムゾーンIDのセットもできます。
    <%TIME_ZONE_ID(SYSTEM)%> : システムのタイムゾーンIDがセットされます。
    <%TIME_ZONE_ID(TENANT)%> : テナントのタイムゾーンIDがセットされます。
    <%TIME_ZONE_ID(USER)%> : ログインユーザのタイムゾーンIDがセットされます。パラメータ省略時と同じです。

コラム

<%TIME_ZONE_ID%>は2024 Autumn(Jasmine)から利用可能です。

4.1.4.12. オリジナルの動的パラメータ作成

下記の設定ファイルでオリジナルの動的パラメータを追加できます。

設定ファイル: WEB-INF/conf/viewcreator-config.xml

パラメータ名の制約: <param-name>タグの値には半角大文字の英字とアンダースコアのみを使用します。

4.1.4.12.1. 単一値パラメータの設定と実装

単一の値を返すパラメータを作成する場合は、jp.co.intra_mart.foundation.viewcreator.SystemParameterインタフェースを実装します。

設定例(ログインユーザのロケール情報を取得するパラメータ):

<param>
  <param-name>LOCALE</param-name>
  <class-name>jp.co.intra_mart.foundation.viewcreator.params.SystemParameterLocale</class-name>
</param>

実装例(ログインユーザのロケール文字列を返す実装):

public class SystemParameterLocale implements jp.co.intra_mart.foundation.viewcreator.SystemParameter {

   @Override
   public String get(final String syskey) {
      final AccountContext context = Contexts.get(AccountContext.class);
      return context.getLocale().toString();
   }
}

4.1.4.12.2. 配列型パラメータの設定と実装

複数の値を配列として返すパラメータを作成する場合は、jp.co.intra_mart.foundation.viewcreator.ArraySystemParameterインタフェースを実装します。

設定例(ログインユーザが所属するロールIDの配列を取得するパラメータ):

<param>
  <param-name>SAMPLE_PARAM_ROLE_IDS</param-name>
  <class-name>sample.SampleParameterRoleIds</class-name>
</param>

実装例(ログインユーザのロールIDの配列を返す実装):

public class SampleParameterRoleIds implements jp.co.intra_mart.foundation.viewcreator.ArraySystemParameter {

   @Override
   public Object[] getArray(final String syskey) {
      final AccountContext context = Contexts.get(AccountContext.class);
      return context.getRoleIds().toArray(new String[0]);
   }
}

使用例:

-- ログインユーザのロールIDを使った抽出条件
SELECT * FROM b_m_role_b WHERE role_id IN (<%SAMPLE_PARAM_ROLE_IDS%>);

-- 実行時変換後(例)
SELECT * FROM b_m_role_b WHERE role_id IN ('tenant_manager', 'im_workflow_user');

追加したパラメータを反映するにはサーバの再起動が必要です。

4.1.4.13. 動的パラメータを利用可能な個所

動的パラメータは「抽出条件」や「検索設定」の他にも、SQLを記述する設定項目において利用可能な場合があります。
詳細は以下の通りです。
定義の種類 画面・設定項目 データの扱い 配列型パラメータ
クエリ クエリビルダ 抽出条件(抽出方法が直接入力のとき) そのまま利用 利用可能
抽出条件(抽出方法が直接入力以外のとき) 自動変換 利用不可
WHERE句直接入力 そのまま利用 利用可能
Viewの作成 利用不可 利用不可
SQLビルダ SQL そのまま利用 利用可能
データ参照 抽出条件 自動変換 利用不可
検索設定 自動変換 利用不可
「データの扱い」が「そのまま利用」の場合は、動的パラメータから取得したデータを加工無しでSQL文の一部として利用するため、そのことを考慮した記述にする必要があります。
たとえば、動的パラメータで取得した値を文字列として利用する場合は、シングルクォートで囲む必要があります。
「自動変換」の場合は、データ型に応じたSQL文に変換してから利用するため、そのような考慮は不要です。

「配列型パラメータ」の列は、配列型動的パラメータが利用可能かを示します。
製品標準では <%REQUEST_PARAMETER_VALUES(KEY_NAME)%> と <%REQUEST_PARAMETER_NUMBER_VALUES(KEY_NAME)%> を提供します。
jp.co.intra_mart.foundation.viewcreator.ArraySystemParameter インタフェースを実装することで独自の配列型パラメータを追加することも可能です。

コラム

シングルクォーテーションの自動エスケープ

すべての動的パラメータについて、受け取ったデータの中に ‘ (シングルクォーテーション)が含まれている場合、’’ (シングルクォーテーションを2つ連続して記述)に自動変換されます。

例:

  • 単一値の場合:受け取ったデータが「user’s」の場合は 「user’’s」として処理
  • 配列値の場合:受け取ったデータが「user’s」「o’connor」の場合は 「’user’’s’, ‘o’‘connor’」として処理