データベースから取得した値を利用する(マスタ検索サブフォーム)

✔ 概要

ワークフローシステムには、入力フォームからサブフォームを呼び出し、データベースより取得した任意の値を一覧表示するマスタ検索サブフォームという機能があります。 表示される検索結果一覧からデータを選択することで、申請書の入力内容として利用できます。
また、ユーザーが検索結果を任意の条件で絞り込めるように、データ検索用の項目を設定することもできます。

注意

本設定は、フォームおよび旧バージョン形式のフォーム(JSP)で利用できます。
旧バージョン形式のフォーム(PDF)では利用できません。

ヒント

マスタ検索サブフォームの設定の詳細は、ワークフローシステム ヘルプのリファレンスマニュアル(フォームマネージャー リファレンス - マスタ検索サブフォーム設定)を参照ください。

ここでは、2つの例でマスタ検索サブフォームの設定方法を説明します。



検索項目なし、単一データの反映

データベースより取得したデータの一覧から1行を選択して入力フォームに反映する場合の設定方法を説明します。
ここでは例として、サンプルデータ用テーブルから製品番号・製品名・定価を取得、一覧表示し、選択したデータを入力フォームに反映する設定を行います。

使用するテーブルの構造は以下の通りです。

テーブル名:xinfo2.a_price_list_tbl
カラム名 論理名
a_kataban 製品番号
a_kataban_name 製品名
a_teika 定価

設定方法

マスタ検索サブフォームの設定

マスタ検索サブフォームの表示や動作、表示するデータの内容を設定します。

フォーム設定の新規作成

  • フォームマネージャーを起動します。

  • ツールバーの iconmst (マスタ検索サブフォーム)ボタンをクリックし、[マスタ検索サブフォーム設定]ダイアログを表示します。

フォーム設定の登録

  • [新規作成]ボタンをクリックし、[フォーム設定]ダイアログを表示します。

  • [フォーム設定]ダイアログで以下の設定を行います。

    項目 設定値
    フォーム名 製品検索フォーム(設定例1)
    表示名 製品検索フォーム
    ウィンドウ - サイズ 500
    高さ 500
    検索結果 初期表示 チェックあり
    選択方式 単一

検索対象データベースの選択

検索結果一覧に表示するデータの検索対象のデータベースを選択します。

  • [クエリ設定]欄の「一覧表示用」をダブルクリックします。

  • [クエリ設定]ダイアログ - [利用するデータベース]コンボボックスでサンプルデータとして登録されているデータベース設定「見積書用」を選択し、[選択]ボタンをクリックします。

    ヒント

    カスタムデータベース以外のデータベースを利用する場合、データベースにJDBC経由で接続しデータを取得します。そのため、接続に必要な設定(ドライバ名、URL、ログインID、パスワード)をあらかじめデータベース設定として登録しておく必要があります。
    データベース設定の詳細は、ワークフローシステム ヘルプのリファレンスマニュアル(フォームマネージャー リファレンス - データベース設定)を参照ください。

テーブル設定の登録

SQL文の「FROM」句に該当する設定を行います。
検索結果一覧に表示するデータの検索対象のテーブルを選択します。
また、検索結果一覧への表示や検索項目の条件として使用したい列を選択します。

  • [クエリ設定]ダイアログ - [テーブル設定]欄の[追加]ボタンをクリックします。

  • [テーブル設定]ダイアログで以下の設定を行います。

    項目 設定値
    テーブル名 xinfo2.a_price_list_tbl
    [列]タブ
    使用する列の選択
    a_kataban_name [使用]:チェックあり [型]:文字列
    a_kataban [使用]:チェックあり [型]:文字列
    a_teika [使用]:チェックあり [型]:数値
  • [OK]ボタンクリックし、[テーブル設定]ダイアログを閉じます。
    [テーブル設定]欄に追加したテーブル設定が表示されます。

データ取得設定の登録

SQL文の「SELECT」句に該当する設定を行います。
マスタ検索サブフォーム上の検索結果一覧に表示する列や、一覧から選択したデータを反映する入力フォームのオブジェクト名を設定します。

  • [クエリ設定]ダイアログの[データの取得]タブを選択し、[追加]ボタンをクリックします。

  • [データ取得設定]ダイアログで以下3つのデータ取得設定を登録します。
    登録することで、製品番号・製品名・定価を検索結果一覧に表示、入力フォーム上に反映することができます。

    項目 列名 一覧表示 入力フォームへのデータ反映
    製品番号 a_price_list_tbl.a_kataban チェックあり
    ラベル:製品番号
    チェックあり
    オブジェクト名:KATABAN
    製品名 a_price_list_tbl.a_kataban_name チェックあり
    ラベル:製品名
    チェックあり
    オブジェクト名:KATABAN_NAME
    定価 a_price_list_tbl.a_teika チェックあり
    ラベル:定価
    チェックあり
    オブジェクト名:TEIKA
  • それぞれのデータ取得設定の登録後、[OK] ボタンをクリックし、[クエリ設定]ダイアログを閉じます。

入力フォーム設定情報表示の確認

入力フォームからマスタ検索サブフォームを呼び出すために必要な情報(JavaScript)を確認します。
確認したJavaScriptは後述の「2.フォームの作成」で使用します。

  • [フォーム設定]ダイアログの[入力フォーム設定情報表示]ボタンをクリックします。

  • [入力フォーム設定情報表示]ダイアログに表示されたJavaScriptをコピーし、任意のテキストエディタ(Windows のメモ帳など)に貼り付けます。

  • [閉じる]ボタンをクリックし、[入力フォーム設定情報表示]ダイアログを閉じます。

フォーム設定の保存

  • [フォーム設定]ダイアログの[OK]ボタンをクリックし、フォーム設定を保存します。
    [マスタ検索サブフォーム設定]ダイアログに設定したフォーム設定が表示されます。

  • [閉じる]ボタンをクリックし、[マスタ検索サブフォーム設定]ダイアログを閉じます。

フォームの作成

マスタ検索サブフォームを利用するフォームを作成します。ここでは、フォームを新規で作成します。

ヒント

フォームの作成方法は、ワークフローシステム ヘルプのリファレンスマニュアル(フォームマネージャー リファレンス - フォーム管理)を参照ください。

データ反映用の入力テキストの配置

検索結果一覧上で選択したデータを表示するための入力テキストを配置します。
入力フォームに入力テキストを3つ配置し、それぞれのオブジェクト名を以下のように設定します。

項目 オブジェクト名
製品番号 KATABAN
製品名 KATABAN_NAME
価格 TEIKA

※オブジェクト名以外の項目は、標準の状態から設定を変更する必要はありません。

マスタ検索サブフォーム画面表示用リンクの作成

入力フォーム上からマスタ検索サブフォームを呼び出すためのリンクを作成します。

◇フォームの場合

  • 入力テキストの配置
    申請フォームに入力テキストを1つ配置し、以下の設定を行います。

    項目 設定値 説明
    オブジェクト名 (任意の値「KENSAKU」など) -
    [表示]タブ 読取専用 チェックあり -
    表示 表示 入力フォーム表示時にリンクを表示します。
    出力時 オプション設定を使用する:有効
    表示:非表示
    PDF出力時にリンクを非表示とします。
    [オプション]タブ 初期値 検索 リンクの表示名になります。
    [HTML]タブ JavaScript (「イベントの設定」参照) -
    CSSクラス名 textlink リンク表示するCSSクラスです。
  • イベントの設定

    • [JavaScript]欄で「クリックする(onClick)」を選択し、[編集]ボタンをクリックします。
    • [JavaScriptの編集]ダイアログで「1-6.入力フォーム設定情報表示の確認」でコピーしたJavaScriptを設定します。

    ヒント

    マルチフォーム使用時の設定

    マルチフォームが設定されたフォームで、データ反映用の入力テキストが「マルチフォームでオブジェクトをページごとに区別する」設定の場合、「1-6.入力フォーム設定情報表示の確認」でコピーしたJavaScriptに対して、追加設定が必要です。

    ◆「マルチフォームでオブジェクトをページごとに区別する」設定

    ◆追加設定

    1-6.入力フォーム設定情報表示の確認」でコピーしたJavaScriptに対して、以下を追加します。

    'objNo',{multiFormId:'フォーム識別子',keyElement:this}
    
    • 「objNo」は、 フォーム設定 で選択方式が「複数」の場合に設定する項目です。今回のように選択方式が「単一」の場合、「空('')」を設定します。
    • 「フォーム識別子」には、 マルチフォーム設定時に指定した[フォーム識別子]を設定します。
      詳細は、Formエディターリファレンス(第2章 機能説明 - 2-4.フォームオブジェクトの共通機能 - 申請時にページの追加・削除を許可する(マルチフォーム))を参照ください。

    ◆例

    CwfJspFormUtil.openMstSubform('MS20180828133904483_0000','',{multiFormId:'FORM01',keyElement:this});
    

◇旧バージョン形式のフォーム(JSP)の場合

  • 入力テキストの配置
    申請フォームに入力テキストを1つ配置し、以下の設定を行います。

    項目 設定値 説明
    オブジェクト名 (任意の値「KENSAKU」など) -
    [表示]タブ 読取専用 チェックあり -
    表示と印刷 表示 入力フォーム表示時にリンクを表示します。
    出力時 オプション設定を使用する:有効
    表示と印刷:非表示
    PDF出力時にリンクを非表示とします。
    [オプション]タブ 初期値 検索 リンクの表示名になります。
    [JSP]タブ イベント (「イベントの設定」参照) -
    CSSクラス名 textlink リンク表示するCSSクラスです。
  • イベントの設定

    • [登録済みのイベント一覧]横の[追加]ボタンをクリックし、[JavaScriptの編集]ダイアログを表示します。
    • [イベントタイミング]にて「onClick」を選択し、[実行するJavaScriptを記述してください]欄に「1-6.入力フォーム設定情報表示の確認」でコピーしたJavaScriptを設定します。

フォームの保存、アップロード

Formエディターでフォームを保存し、フォームをサーバーにアップロードします。

動作確認

ワークフローシステムで以下を確認します。

  • 設定したマスタ検索サブフォームが入力フォーム上で表示されること
  • 選択したデータが入力フォームに反映されること
  • ワークフローシステムにログインし、作成したフォームの申請フォームを表示します。

  • 入力フォーム上の[検索] リンクをクリックし、マスタ検索サブフォームを表示します。
    データベースより取得した製品番号・製品名・定価が一覧表示されていることを確認します。

  • 一覧より任意のデータを選択します。選択した製品番号・製品名・定価が入力フォーム上のそれぞれの入力テキストに反映されることを確認します。

検索項目あり、複数データの反映

データベースより取得したデータの一覧から複数行を選択して入力フォームに反映する場合の設定方法を説明します。
また、マスタ検索サブフォーム上にデータ検索用の項目を表示し、ユーザーが任意の条件でデータを絞り込めるように設定します。

ここでは例として、サンプルデータ用テーブルから製品番号・製品名・定価を検索項目としてユーザーが任意の条件で絞り込めるように設定し、複数選択したデータを入力フォームに反映する設定を行います。

使用するテーブルの構造は以下の通りです。

テーブル名:xinfo2.a_price_list_tbl
カラム名 論理名
a_kataban 製品番号
a_kataban_name 製品名
a_teika 定価

設定方法

マスタ検索サブフォームの設定

マスタ検索サブフォームの表示や動作、検索用項目、表示するデータの内容を設定します。

フォーム設定の新規作成

  • フォームマネージャーを起動します。

  • ツールバーの iconmst (マスタ検索サブフォーム)ボタンをクリックし、[マスタ検索サブフォーム設定]ダイアログを表示します。

フォーム設定の登録

  • [新規作成]ボタンをクリックし、[フォーム設定]ダイアログを表示します。

  • [フォーム設定]ダイアログで以下の設定を行います。

    項目 設定値
    フォーム名 製品検索フォーム(設定例2)
    表示名 製品検索フォーム
    ウィンドウ - サイズ 500
    高さ 600
    検索結果 初期表示 チェックあり
    選択方式 複数
    繰返し番号 0埋めなし

検索対象データベースの選択

検索結果一覧に表示するデータの検索対象のデータベースを選択します。

  • [クエリ設定]欄の「一覧表示用」をダブルクリックします。

  • [クエリ設定]ダイアログ - [利用するデータベース]コンボボックスでサンプルデータとして登録されているデータベース設定「見積書用」を選択し、[選択]ボタンをクリックします。

    ヒント

    カスタムデータベース以外のデータベースを利用する場合、データベースにJDBC経由で接続しデータを取得します。そのため、接続に必要な設定(ドライバ名、URL、ログインID、パスワード)をあらかじめデータベース設定として登録しておく必要があります。
    データベース設定の詳細は、ワークフローシステム ヘルプのリファレンスマニュアル(フォームマネージャー リファレンス - データベース設定)を参照ください。

テーブル設定の登録

SQL文の「FROM」句に該当する設定を行います。
検索結果一覧に表示するデータの検索対象のテーブルを選択します。
また、検索結果一覧への表示や検索項目の条件として使用したい列を選択します。

  • [クエリ設定]ダイアログ - [テーブル設定]欄の[追加]ボタンをクリックします。

  • [テーブル設定]ダイアログで以下の設定を行います。

    項目 設定値
    テーブル名 xinfo2.a_price_list_tbl
    [列]タブ
    使用する列の選択
    a_kataban_name [使用]:チェックあり [型]:文字列
    a_kataban [使用]:チェックあり [型]:文字列
    a_teika [使用]:チェックあり [型]:数値
  • [OK]ボタンクリックし、[テーブル設定]ダイアログを閉じます。
    [テーブル設定]欄に追加したテーブル設定が表示されます。

データ取得設定の登録

SQL文の「SELECT」句に該当する設定を行います。
マスタ検索サブフォーム上の検索結果一覧に表示する列や、一覧から選択したデータを反映する入力フォームのオブジェクト名を設定します。

  • [クエリ設定]ダイアログの[データの取得]タブを選択し、[追加]ボタンをクリックします。

  • [データ取得設定]ダイアログで以下3つのデータ取得設定を登録します。
    登録することで、製品番号・製品名・定価を検索結果一覧に表示、入力フォーム上に反映することができます。

    項目 列名 一覧表示 入力フォームへのデータ反映
    製品番号 a_price_list_tbl.a_kataban チェックあり
    ラベル:製品番号
    チェックあり
    オブジェクト名:KATABAN-*
    製品名 a_price_list_tbl.a_kataban_name チェックあり
    ラベル:製品名
    チェックあり
    オブジェクト名:KATABAN_NAME-*
    定価 a_price_list_tbl.a_teika チェックあり
    ラベル:定価
    チェックあり
    オブジェクト名:TEIKA-*

    ヒント

    オブジェクト名の「*」は、フォーム設定 の[検索結果] - [選択方式]で「複数」を選択した場合に指定します。
    「KATABAN-1」「KATABAN-2」「KATABAN-3」のようにオブジェクト名が数字部分のみ異なるオブジェクトの場合、「KATABAN-*」のように数字部分を「*」と指定します。

検索条件の設定

SQL文の「WHERE」句に該当する設定を行います。
マスタ検索サブフォーム上でユーザーが入力した値を元にデータの絞り込みが行えるように設定します。

  • 列の選択
    検索条件を設定する列を選択します。

    • [クエリ設定]ダイアログの[検索条件]タブを選択し、[列の選択]ボタンをクリックします。

      [列の選択]ダイアログが表示されます。

    • 製品番号・製品名・定価を検索項目とするので、全てのチェックボックスにチェックを入れ、[OK]ボタンをクリックします。
      [検索条件一覧]に選択した列が表示され、それぞれに対して検索条件を設定できるようになります。

  • 任意検索条件の設定
    ユーザーの入力値を元にデータを絞り込む際の条件を設定します。

    • [任意検索条件]行で各列の「(未設定)」をダブルクリックします。

    • 表示される[任意検索条件設定]ダイアログで、それぞれの列に対して以下の設定を行います。

      列名 条件
      a_price_list_tbl.a_kataban_name 含む
      a_price_list_tbl.a_kataban 等しい
      a_price_list_tbl.a_teika 以上
    • 3つの任意検索条件を設定後、[OK]ボタンをクリックし、[クエリ設定]ダイアログを閉じます。

検索項目入力設定の登録

ユーザーが検索条件を入力する際の入力形式を設定します。

  • [フォーム設定]ダイアログ - [検索項目入力設定]欄の[追加]ボタンをクリックします。

  • [検索項目入力設定]ダイアログで、製品番号・製品名・定価の検索項目それぞれに対して、以下の入力設定を登録します。

    項目 列名 ラベル 種別 表示 初期値
    製品番号 a_price_list_tbl.a_kataban 製品番号 入力テキスト 表示 固定値
    (入力なし)
    製品名 a_price_list_tbl.a_kataban_name 製品名 入力テキスト 表示 固定値
    (入力なし)
    定価 a_price_list_tbl.a_teika 定価 入力テキスト 表示 固定値
    (入力なし)

入力フォーム設定情報表示の確認

入力フォームからマスタ検索サブフォームを呼び出すために必要な情報(JavaScript)を確認します。
確認したJavaScriptは後述の「2.フォームの作成」で使用します。

  • [フォーム設定]ダイアログの[入力フォーム設定情報表示]ボタンをクリックします。

  • [入力フォーム設定情報表示]ダイアログに表示されたJavaScriptをコピーし、任意のテキストエディタ(Windows のメモ帳など)に貼り付けます。

  • [閉じる]ボタンをクリックし、[入力フォーム設定情報表示]ダイアログを閉じます。

フォーム設定の保存

  • [フォーム設定]ダイアログの[OK]ボタンをクリックし、フォーム設定を保存します。
    [マスタ検索サブフォーム設定]ダイアログに設定したフォーム設定が表示されます。

  • [閉じる]ボタンをクリックし、[マスタ検索サブフォーム設定]ダイアログを閉じます。

フォームの作成

マスタ検索サブフォームを利用するフォームを作成します。ここでは、フォームを新規で作成します。

ヒント

フォームの作成方法は、ワークフローシステム ヘルプのリファレンスマニュアル(フォームマネージャー リファレンス - フォーム管理)を参照ください。

データ反映用の入力テキストの配置

検索結果一覧上で選択したデータを表示するための入力テキストを配置します。
今回、検索結果一覧より複数のデータを選択・反映しますので、入力フォームに各項目に対して入力テキストを3つずつ配置し、それぞれのオブジェクト名を以下のように設定します。

項目 オブジェクト名
製品番号 KATABAN-1、KATABAN-2、KATABAN-3
製品名 KATABAN_NAME-1、KATABAN_NAME-2、KATABAN_NAME-3
価格 TEIKA-1、TEIKA-2、TEIKA-3

※オブジェクト名以外の項目は、標準の状態から設定を変更する必要はありません。

マスタ検索サブフォーム画面表示用リンクの作成

入力フォーム上からマスタ検索サブフォームを呼び出すためのリンクを作成します。

◇フォームの場合

  • 入力テキストの配置
    申請フォームに入力テキストを1つ配置し、以下の設定を行います。

    項目 設定値 説明
    オブジェクト名 (任意の値「KENSAKU」など) -
    [表示]タブ 読取専用 チェックあり -
    表示 表示 入力フォーム表示時にリンクを表示します。
    出力時 オプション設定を使用する:有効
    表示:非表示
    PDF出力時にリンクを非表示とします。
    [オプション]タブ 初期値 検索 リンクの表示名になります。
    [HTML]タブ JavaScript (「イベントの設定」参照) -
    CSSクラス名 textlink リンク表示するCSSクラスです。
  • イベントの設定

    • [JavaScript]欄で「クリックする(onClick)」を選択し、[編集]ボタンをクリックします。

    • [JavaScriptの編集]ダイアログで「1-8.入力フォーム設定情報表示の確認」でコピーしたJavaScriptを設定します。

    • 各項目ごとに複数配置した入力テキストのうち、「KATABAN-1」、「KATABAN_NAME-1」、「TEIKA-1」からマスタ検索サブフォームで選択したデータを反映させるため、JavaScriptの第2引数「'objNo'」を「'1'」に変更します。

      CwfJspFormUtil.openMstSubform('マスタ検索サブフォームID','1');
      

    ヒント

    JavaScriptの第2引数「'objNo'」には、データ反映を開始したいオブジェクトの番号を設定します。
    例えば、上記手順で「'objNo'」を「'2'」に変更した場合、「KATABAN-2」、「KATABAN_NAME-2」、「TEIKA-2」以降の入力テキストに選択したデータが反映されます。

    ヒント

    マルチフォーム使用時の設定

    マルチフォームが設定されたフォームで、データ反映用の入力テキストが「マルチフォームでオブジェクトをページごとに区別する」設定の場合、「1-8.入力フォーム設定情報表示の確認」でコピーしたJavaScriptに対して、追加設定が必要です。

    ◆「マルチフォームでオブジェクトをページごとに区別する」設定

    ◆追加設定

    1-8.入力フォーム設定情報表示の確認」でコピーしたJavaScriptに対して、以下を追加します。

    {multiFormId:'フォーム識別子',keyElement:this}
    

    「フォーム識別子」には、 マルチフォーム設定時に指定した[フォーム識別子]を設定します。
    詳細は、Formエディターリファレンス(第2章 機能説明 - 2-4.フォームオブジェクトの共通機能 - 申請時にページの追加・削除を許可する(マルチフォーム))を参照ください。

    ◆例

    CwfJspFormUtil.openMstSubform('MS20180828133904483_0000','1',{multiFormId:'FORM01',keyElement:this});
    

◇旧バージョン形式のフォーム(JSP)の場合

  • 入力テキストの配置
    申請フォームに入力テキストを1つ配置し、以下の設定を行います。

    項目 設定値 説明
    オブジェクト名 (任意の値「KENSAKU」など) -
    [表示]タブ 読取専用 チェックあり -
    表示と印刷 表示 入力フォーム表示時にリンクを表示します。
    出力時 オプション設定を使用する:有効
    表示と印刷:非表示
    PDF出力時にリンクを非表示とします。
    [オプション]タブ 初期値 検索 リンクの表示名になります。
    [JSP]タブ イベント (「イベントの設定」参照) -
    CSSクラス名 textlink リンク表示するCSSクラスです。
  • イベントの設定

    • [登録済みのイベント一覧]横の[追加]ボタンをクリックし、[JavaScriptの編集]ダイアログを表示します。

    • [イベントタイミング]にて「onClick」を選択し、[実行するJavaScriptを記述してください]欄に「1-8.入力フォーム設定情報表示の確認」でコピーしたJavaScriptを設定します。

    • 各項目ごとに複数配置した入力テキストのうち、「KATABAN-1」、「KATABAN_NAME-1」、「TEIKA-1」からマスタ検索サブフォームで選択したデータを反映させるため、JavaScriptの第2引数「'objNo'」を「'1'」に変更します。

      CwfJspFormUtil.openMstSubform('マスタ検索サブフォームID','1');
      

    ヒント

    JavaScriptの第2引数「'objNo'」には、データ反映を開始したいオブジェクトの番号を設定します。
    例えば、上記手順で「'objNo'」を「'2'」に変更した場合、「KATABAN-2」、「KATABAN_NAME-2」、「TEIKA-2」以降の入力テキストに選択したデータが反映されます。

フォームの保存、アップロード

Formエディターでフォームを保存し、フォームをサーバーにアップロードします。

動作確認

ワークフローシステムで以下を確認します。

  • 設定したマスタ検索サブフォームが入力フォーム上で表示されること
  • 検索欄で入力した内容で検索結果が絞り込まれること
  • 選択したデータが入力フォームに反映されること
  • ワークフローシステムにログインし、作成したフォームの申請フォームを表示します。

  • 入力フォーム上の[検索] リンクをクリックし、マスタ検索サブフォームを表示します。
    製品番号・製品名・定価の検索欄および、データベースより取得した製品番号・製品名・定価が一覧表示されていることを確認します。

  • 製品名の検索欄に「ワークフローシステム」を入力し、[検索]ボタンをクリックします。
    検索結果が「ワークフローシステム」を含む製品名で絞り込まれていることを確認します。

  • 一覧より任意のデータを3つ選択し、[選択]ボタンをクリックします。
    選択した製品番号・製品名・定価が、入力フォーム上のそれぞれの入力テキストに反映されることを確認します。