intra-mart Accel Kaiden! MasterBuilder 設定ガイド 第13版 2024-04-01

4.2. 検索用SQL

本項では、MasterBuilderで使用するSQLの作成方法を説明します。

4.2.1. 概要

MasterBuilderでSQLを使用する処理は次の通りです。
  • マスタメンテナンス機能(一覧部品)の一覧表示データ抽出
  • マスタメンテナンス機能(編集部品)の更新対象データ抽出
  • マスタメンテナンス機能(期間部品)の更新対象期間抽出
  • マスタ検索部品やセレクトボックスへのデータ抽出
  • エクスポート機能のエクスポート対象データ抽出
拡張設定」を使用することで、上記それぞれの処理用のSQLを作成することも可能ですが、
カスタマイズ性や保守性を考慮し、単一SQLでの実現を推奨します。
拡張設定」を使用しない場合のMasterBuilderで使用するSQLの配置先は次の通りです。

%ModuleProject%/src/main/resources/META-INF/sql/jp/co/slcs/kaiden/v2/generic/master/%マスタID%.sql
(マスタIDには、MasterBuilder定義で設定したマスタIDを指定してください。)

単一のSQLで各検索処理を実現するために次の様な機能を用意しています。
  • 検索基準となる値の補完
    検索基準日・検査基準ロケール・検索基準ユーザはどの処理でも補完し、SQLに引き渡されます。
    名称 SQLで使用する値 補完順
    検索基準日 searchCriteriaDate リクエストパラメータ > システム日付
    検索基準ロケール searchCriteriaLocale リクエストパラメータ > ログインユーザのロケール(ジョブの場合はシステムロケール)
    検索基準ユーザ searchCriteriaUser リクエストパラメータ > ログインユーザ
  • 検索用途の連携
    各検索用途に応じた値を「searchType」に設定してSQLに引き渡されます。
    これにより、Where句のIF分岐が可能となります
    対象 SQLで使用する値 設定値
    一覧検索 searchType search
    対象検索 searchType select
    期間検索 searchType term
    マスタ検索 searchType master
    エクスポート searchType export

4.2.2. 一覧検索用SQL

一覧検索用のSQLでは、メンテナンス機能の一覧画面に表示するマスタデータを抽出します。
一覧表示時に単一のロケールデータを表示する必要がある為、国際化されたマスタの場合は注意が必要です。
また、本検索の結果が「対象検索用SQL」、「期間検索用SQL」のリクエストパラメータとして引き渡されます。
  • 検索結果の表示先
    ../../../_images/search_0012.png
  • SQLに引き渡される検索条件
    検索条件 設定値
    searchCriteriaCompany
    検索条件に設定された会社のコード値
    会社化特性の場合のみ設定
    非会社化特性の場合は「null」
    searchCriteriaDate
    検索条件に設定された検索基準日
    searchCriteriaUser
    ログインユーザのユーザコード
    searchCriteriaLocale
    検索条件に設定されたロケールのID
    searchWithDisabled
    検索条件に設定された無効データの検索有無
    チェックなしの場合は「0」
    チェックありの場合は「null」
    searchCriteriaKeyword
    検索条件に設定されたキーワード
    未設定の場合は「null」
    orderBy
    一覧表示のソート条件
    初回検索時は「メンテナンス設定」に設定されたソート順
    searchType
    固定値「search」

4.2.3. 対象検索用SQL

対象検索用のSQLでは、メンテナンス機能の編集画面(編集部品)に表示するマスタデータを抽出します。
  • 検索結果の表示先
    ../../../_images/select_001.png
  • SQLに引き渡される検索条件
    対象検索時は、次の検索条件に加え、一覧検索時に返却したデータがすべて検索条件(リクエストパラメータ)となります。
    次の検索条件がリクエストパラメータに含まれる場合は上書きします。
    検索条件 設定値
    searchCriteriaDate
    期間化特性、かつリクエストパラメータに「startDate」が含まれる場合はその値
    上記以外はシステム日付
    searchCriteriaUser
    リクエストパラメータに「searchCriteriaUser」が含まれる場合はその値
    上記以外はログインユーザのユーザコード
    searchCriteriaLocale
    国際化特性、かつリクエストパラメータに「localeId」が含まれる場合はその値
    上記以外はログインユーザのロケール
    searchType
    固定値「select」

4.2.4. 期間検索用SQL

期間検索用のSQLでは、メンテナンス機能の編集画面(期間部品)に表示するマスタデータを抽出します。
  • 検索結果の表示先
    ../../../_images/term_001.png
  • SQLに引き渡される検索条件
    期間検索時は、次の検索条件に加え、一覧検索時に返却したデータがすべて検索条件(リクエストパラメータ)となります。
    次の検索条件がリクエストパラメータに含まれる場合は上書きします。
    検索条件 設定値
    searchCriteriaDate
    期間化特性、かつリクエストパラメータに「startDate」が含まれる場合はその値
    上記以外はシステム日付
    searchCriteriaUser
    リクエストパラメータに「searchCriteriaUser」が含まれる場合はその値
    上記以外はログインユーザのユーザコード
    searchCriteriaLocale
    国際化特性、かつリクエストパラメータに「localeId」が含まれる場合はその値
    上記以外はログインユーザのロケール
    searchType
    固定値「term」

4.2.5. マスタ検索用SQL

マスタ検索用のSQLでは、検索部品やセレクトボックスに表示するマスタデータを抽出します。
  • 検索結果の表示先
    ../../../_images/master_001.png
  • SQLに引き渡される検索条件
    マスタ検索時は、次の検索条件に加え、項目の検索条件に指定されたデータがすべて検索条件(リクエストパラメータ)となります。
    次の検索条件がリクエストパラメータに含まれる場合は上書きします。
    検索条件 設定値
    searchCriteriaDate
    リクエストパラメータに「searchCriteriaDate」が含まれる場合はその値
    上記以外はシステム日付
    searchCriteriaUser
    リクエストパラメータに「searchCriteriaUser」が含まれる場合はその値
    上記以外はログインユーザのユーザコード
    searchCriteriaLocale
    リクエストパラメータに「searchCriteriaLocale」が含まれる場合はその値
    上記以外はログインユーザのロケール
    deleteFlag
    リクエストパラメータ「includeDisabled」に「”true”」以外が設定されていた場合は「0」
    上記以外の場合は「null」
    searchCriteriaKeyword
    検索部品の場合は入力されたキーワード
    上記以外、または未設定の場合は「null」
    searchType
    固定値「master」

4.2.6. エクスポート用SQL

エクスポート用のSQLでは、エクスポートを行うマスタデータを抽出します。
  • SQLに引き渡される検索条件
    エクスポート時は、次の検索条件に加え、「searchCriteria」から始まるジョブのパラメータが検索条件(リクエストパラメータ)となります。
    検索条件 設定値
    searchCriteriaCompany
    会社化特性の場合は処理中の会社のコード値
    非会社化特性の場合は「null」
    searchCriteriaDate
    システム日付
    searchCriteriaUser
    リクエストパラメータに「searchCriteriaUser」が含まれる場合はその値
    上記以外はログインユーザのユーザコード
    searchCriteriaLocale
    リクエストパラメータに「searchCriteriaLocale」が含まれる場合はその値
    上記以外はログインユーザのロケール
    targetDate
    期間モードでエクスポートを実行した場合は検索対象日
    上記以外は「null」
    renewTs
    更新日モードでエクスポートを実行した場合は検索対象日
    上記以外は「null」
    searchType
    固定値「export」

4.2.7. Sample

次のSQLは勘定科目マスタの設定を行った場合のサンプルです。
select 
    target.company_cd 
  , dept.department_name as company_name 
  , target.account_cd 
  , target.term_cd 
  , target.locale_id 
  , target.account_name 
  , target.start_date 
  , target.end_date 
  , target.delete_flag 
  , target.extension_a 
  , target.extension_b 
  , target.extension_c 
  , target.extension_d 
  , target.extension_e 
  , target.extension_f 
  , target.extension_g 
  , target.extension_h 
  , target.extension_i 
  , target.extension_j 
  , target.entry_ts 
  , target.entry_user_cd 
  , target.renew_cnt 
  , target.renew_ts 
  , target.renew_user_cd 
from 
  k30m_account target 
  left join ( 
    select 
        imm_department.company_cd 
      , imm_department.department_set_cd 
      , imm_department.department_cd 
      , imm_department.locale_id 
      , imm_department.start_date 
      , imm_department.end_date 
      , imm_department.department_name 
    from 
      imm_department 
  ) dept 
  on  target.company_cd = dept.company_cd 
  and target.company_cd = dept.department_set_cd 
  and target.company_cd = dept.department_cd 
  and target.locale_id = dept.locale_id 
  /*IF searchCriteriaDate != null*/
  and dept.start_date <= /*searchCriteriaDate*/'2000/01/01' 
  and dept.end_date > /*searchCriteriaDate*/'2000/01/01' 
  /*END*/

/*IF searchType == "search"*/
/*BEGIN*/
where
  /*IF searchCriteriaCompany != null*/
  target.company_cd = /*searchCriteriaCompany*/'searchCriteriaCompany'
  /*END*/
  /*IF searchCriteriaDate != null*/
  and target.start_date <= /*searchCriteriaDate*/'2000/01/01'
  and target.end_date   >  /*searchCriteriaDate*/'2000/01/01'
  /*END*/
  /*IF searchWithDisabled != null*/
  and target.delete_flag = /*searchWithDisabled*/'searchWithDisabled'
  /*END*/
  /*IF searchCriteriaLocale != null*/
  and target.locale_id = /*searchCriteriaLocale*/'searchCriteriaLocale'
  /*END*/
  /*IF searchCriteriaKeyword != null*/
  and (
    target.account_cd           like /*searchCriteriaKeyword*/'%' ESCAPE '$'
    or target.account_name      like /*searchCriteriaKeyword*/'%' ESCAPE '$'
  )
  /*END*/
/*END*/
/*IF orderBy != null*/
order by /*$orderBy*/account_cd
/*END*/
/*END*/

/*IF searchType == "select"*/
/*BEGIN*/
where
  /*IF accountCd != null*/
  target.account_cd = /*accountCd*/'accountCd'
  /*END*/
  /*IF companyCd != null*/
  and target.company_cd = /*companyCd*/'companyCd'
  /*END*/
  /*IF termCd != null*/
  and target.term_cd = /*termCd*/'termCd'
  /*END*/
/*END*/
order by account_cd
/*END*/

/*IF searchType == "term"*/
/*BEGIN*/
where
  /*IF accountCd != null*/
  target.account_cd = /*accountCd*/'accountCd'
  /*END*/
  /*IF companyCd != null*/
  and target.company_cd = /*companyCd*/'companyCd'
  /*END*/
  /*IF localeId != null*/
  and target.locale_id = /*localeId*/'localeId'
  /*END*/
/*END*/
order by account_cd, start_date
/*END*/

/*IF searchType == "master"*/
/*BEGIN*/
where
  /*IF accountCd != null*/
  target.account_cd = /*accountCd*/'accountCd'
  /*END*/
  /*IF searchCriteriaCompany != null*/
  and target.company_cd = /*searchCriteriaCompany*/'searchCriteriaCompany'
  /*END*/
  /*IF searchCriteriaDate != null*/
  and target.start_date <= /*searchCriteriaDate*/'2000/01/01'
  and target.end_date    > /*searchCriteriaDate*/'2000/01/01'
  /*END*/
  /*IF deleteFlag != null*/
  and target.delete_flag = /*deleteFlag*/'deleteFlag'
  /*END*/
  /*IF searchCriteriaLocale != null*/
  and target.locale_id = /*searchCriteriaLocale*/'searchCriteriaLocale'
  /*END*/
  /*IF searchCriteriaKeyword != null*/
  and (
    target.account_cd           like /*searchCriteriaKeyword*/'%' ESCAPE '$'
    or target.account_name      like /*searchCriteriaKeyword*/'%' ESCAPE '$'
  )
  /*END*/ 
/*END*/
order by account_cd
/*END*/

/*IF searchType == "export"*/
/*BEGIN*/
where
  /*IF searchCriteriaCompany != null*/
  target.company_cd = /*searchCriteriaCompany*/'searchCriteriaCompany'
  /*END*/
  /*IF targetDate != null*/
  and target.start_date <= /*targetDate*/'2000/01/01'
  and target.end_date    > /*targetDate*/'2000/01/01'
  /*END*/
  /*IF renewTs != null*/
  and target.renew_ts >= /*renewTs*/'2000/01/01'
  /*END*/
/*END*/
order by account_cd, start_date, locale_id
/*END*/