UI部品 基本編

| この記事でわかること: ・データの入力規則を利用した入力データの突合チェックの実装方法 ・入力値と既存データを照合して重複登録を防止する方法 ・入力規則のコマンドを利用した柔軟な入力検証の実装方法 |
Forguncyのデータの入力規則では、入力形式や値の範囲だけでなく、コマンドを利用して既存データとの照合も行えます。
この仕組みを活用することで、既存データとの重複を登録前に確認し、集計結果や後続作業への影響を防ぐような入力チェックを実装することができます。
本記事では、製造番号ごとの品質検査を題材に、入力された製造番号と検査履歴を照合して、検査結果の重複登録を防ぐ方法を紹介します。
| プロジェクトファイル (作成バージョン:(10.0.15.0) | validation-check3_before.fgcp validation-check3_after.fgcp(実装済みプロジェクトファイル) |
1.プロジェクトを確認する
今回の演習で使用するプロジェクトを確認します。
手順1-1.テーブルを確認
プロジェクトには既にテーブルが内蔵されています。今回は下記の2つのテーブルを使用します。

手順1-2.ページを確認
プロジェクトには複数のページが内蔵されています。
「検査結果一覧」ページは検査履歴テーブルに登録されているデータを一覧表形式で表示するページで、検査結果を登録するポップアップウィンドウを表示するボタンが設置されています。
検査結果の登録が正しく行われると、ポップアップウィンドウが閉じた際にリストビューが更新され、登録されたデータが表示されます。
「検査結果登録」ページには6つの項目の入力欄と、登録/キャンセルのためのボタンが用意されています。
今回はこのページの「製造番号」を入力するセルに入力規則を使った入力チェックを設定します。

2. データの入力規則を設定する
検査結果登録ページの製造番号セルに、データの入力規則を設定します。
今回は、入力された製造番号に対して
・製造実績テーブルに存在する製造番号か
・検査履歴テーブルに同じ製造番号が登録されていないか
の2つのチェックを行います。
こうすることで製造実績テーブルに存在し、かつ検査履歴テーブルに登録されていない製造番号だけを入力可能にします。
手順2-1. セルにデータの入力規則を設定
製造番号の入力値に対してデータの入力規則を設定し、チェックを行う設定をします。
検査結果登録ページの製造番号の入力セルを選択し、右ペインの[セル型]タブにあるデータの入力規則ハイパーリンクをクリックします。
データの入力規則ウィンドウが開くので、[設定]タブの入力値の種類を「コマンド」に変更します。

すると、[入力規則の検証コマンドを設定する…]というハイパーリンクが表示されるので、それをクリックしコマンドウィンドウを開きます。
上述の2種類のチェックはこのコマンドウィンドウで設定を行います。

手順2-2. 製造実績の存在チェック
入力された製造番号と一致するデータが製造実績テーブルに存在するかを確認します。
変数の設定コマンドを追加し、製造実績テーブルから、入力値と同じ製造番号を持つレコードの件数を取得します。
設定は下記のように行います。
| 変数名 | p製造実績件数 |
| 変数値 | データベースのテーブルを参照 |
| 対象テーブル | 製造実績テーブル |
| 選択 | レコード数 |

[クエリー]タブに移動し、抽出するデータの条件を下記のように指定します。
なお、ここで使用している「入力値」は、製造番号セルに入力された値となります。
| フィールド | 条件 | 値 |
| [製造番号] | =(等しい) | =入力値 |

次に条件分岐コマンドを追加し、条件に合うデータが存在するかどうか(=[クエリー]タブで指定した条件に一致するレコード数が0件以下か否か)を判定します。
条件式は以下のように指定します。
| フィールド | 条件 | 値 |
| p製造実績件数 | <=(以下) | =0 |

この条件を満たす場合は、製造実績テーブルに存在しない製造番号が入力されています。
そのため、リターンコマンドを使用しエラーを返して終了する処理を追加します。
設定内容は以下の通りです。
| リターンコード | E-001 |
| リターンメッセージ | 該当する製造番号が見つかりません。製造番号を確認してください。 |

これで、例えば「MFG-999」など製造実績テーブルに該当するレコードが無い値を入力すると、エラーを表示して登録ができないようになります。
1件以上のデータが見つかった場合は、次の突合せチェックへ進みます。
手順2-3. 検査履歴テーブルとの突合せチェック
続いて、入力された製造番号の検査結果が検査履歴テーブルに既に登録されていないかを確認します。
変数の設定コマンドを追加し、以下のように設定して検査履歴テーブルから入力値と同じ製造番号を持つレコードの件数を取得します。
| 変数名 | p検査履歴件数 |
| 変数値 | データベースのテーブルを参照 |
| 対象テーブル | 検査履歴テーブル |
| 選択 | レコード数 |

[クエリー]タブに移動し、抽出するデータの条件を下記のように指定します。
なお、ここでも使用している「入力値」は、製造番号セルに入力された値となります。
| フィールド | 条件 | 値 |
| [製造番号] | =(等しい) | =入力値 |

次に条件分岐コマンドを追加し、取得した検査履歴の件数が存在するか(=[クエリー]タブで指定した条件に一致するレコード数が1件以上か否か)を判定します。
条件式は以下のように指定します。
| フィールド | 条件 | 値 |
| p検査履歴件数 | >=(以上) | =1 |

この条件を満たす場合は、既に検査履歴テーブルに検査結果が登録されています。
そのため、リターンコマンドを使用しエラーを返して終了する処理を追加します。
設定内容は以下の通りです。
| リターンコード | E-002 |
| リターンメッセージ | この製造番号の検査結果はすでに登録されています。 |

これらの条件に一致しない場合は入力規則エラーを返さず、検査結果の入力を許可するよう設定します。
条件分岐コマンドに戻り、[Elseの追加]ボタンを押下します。

Elseの中にリターンコマンドを追加し、リターンコードの欄に「0」と入力します。

ここまで設定が終わったら[OK]ボタンを押してコマンドウィンドウを閉じ、またデータの入力規則ウィンドウでも[OK]ボタンを押して設定を完了します。
手順2-4. 登録ボタンの処理の確認
[登録]ボタンには、検査結果を登録するためのコマンドがあらかじめ設定されています。
[登録]ボタンを選択してコマンド設定を開き、設定済みの処理内容を確認します。

設定されている内容は、確認ダイアログを表示→ユーザーが「はい」を選んだ場合に検査履歴テーブルに検査結果を追加する→ポップアップウィンドウを閉じる、というものです。
これらの一連のコマンドには入力チェックが設定されていませんが、製造番号セルの入力規則でエラーが発生していると検査結果は登録されません。
製造番号セルの入力規則でエラーが無かった場合のみ、登録処理を実行できます。
3.デバッグを実行する
デバッグを行うには、動作確認したいページを開いた状態でリボンの[ホーム]>[デバッグ実行]>[▶]ボタン、またはForguncy Builderの左上にある▶ボタンを押下してプロジェクトをデバッグ実行します。

プロジェクトを実行すると、Webブラウザーに「検査結果一覧」ページが表示されます。
[検査結果を登録]ボタンをクリックして「検査結果登録」ページを開き、製造番号を入力して設定した入力規則の動作を確認します。
はじめに「MFG-999」と入力すると、製造実績テーブルに該当するデータが存在しないため、エラーが表示されます。
次に、検査履歴テーブルに登録済みの「MFG-001」を入力すると、「この製造番号の検査結果はすでに登録されています。」というエラーが表示されます。
最後に、未検査の「MFG-002」を入力するとエラーは表示されず、検査結果を登録できます。

ForguncyのUI部品についてもっと知る
Forguncyの開発スタートガイドやオンラインヘルプでは、ユーザーがより使いやすいアプリを作成するのに便利なUI部品についてより詳しくご紹介しています。
こちらもぜひご活用ください。
>開発スタートガイド – Forguncyで機能的なUIを作成する
