220‐02 在庫管理| 活用編
このサーバーサイド処理はサーバーサイド処理の活用シナリオにある「出庫分を差し引いた在庫数を登録」の具体的な作成方法を解説したものです。
出庫処理を行う際に、「出庫管理」テーブルには出庫数を登録し、「在庫管理」テーブルには現在の在庫数から出庫分を差し引いた数を在庫数として登録します。
下記のプロジェクトファイルにはここで解説する出庫処理のほか、あらかじめ入庫処理が実装されています。
プロジェクトファイル | S220-02_inventory-registration_b.fgcp S220-02_inventory-registration_a.fgcp(実装済みプロジェクトファイル) |
サーバーサイドコマンドの作成
プロジェクトを開き、リボンの「作成」メニューから「サーバーサイドコマンド」を選択し「サーバーサイドコマンドマネージャー」を表示します。
新規に「出庫分を差し引いた在庫数を登録」という名前でサーバーサイドコマンドを作成します。

パラメーターの設定
パラメータータブを開き、「商品ID」と「出庫数」のパラメーターを作成します。
- パラメーター「商品ID」を作成
種類を「基本型」に設定 - パラメーター「出庫数」を作成
種類を「基本型」に設定

在庫管理テーブルの更新対象レコードの値を参照するパラメーターを設定します。
コマンドタブを開き「変数の設定」コマンドを追加し、以下のように設定します。
- 「変数名」を「在庫管理」と入力
- 「変数値」で「データベースのテーブルを参照」を選択
「対象テーブル」で「在庫管理」を選択 - 「変数値」の選択タブで「単一レコード」を選択
「フィールドの追加」ボタンを押下し以下の3項目を追加- 「フィールド」に「[商品ID]」を選択
「変数名」に「商品ID」と入力 - 「フィールド」に「[商品名]」を選択
「変数名」に「商品名」と入力 - 「フィールド」に「[在庫数]」を選択
「変数名」に「在庫数」と入力
- 「フィールド」に「[商品ID]」を選択
- 「変数値」のクエリータブで「フィールド」に「商品ID」、「条件」に「=(等しい)」、「値」に「=商品ID」と設定
変数の設定
変数の設定を使用することで、データベースから取得した値を変数に格納できます。
定義した変数は、「=(変数).(フィールド名)」の形で後続のコマンド内での使用が可能です。
後述のテーブルデータの更新コマンドでは、「=在庫管理.商品ID」と記述して商品IDの値を取得したり、「=在庫管理.在庫数-出庫数」というように式の一部に用いたりして処理に使用しています。

処理コマンドの作成
「トランザクション」コマンドを追加します。
トランザクションを設定することで、何らかの問題により更新処理が失敗した場合でも、出庫管理と在庫管理のデータの整合性を維持することが可能になります。
出庫処理で入力された情報を出庫管理テーブルに登録するため、トランザクションの子コマンドに「テーブルデータの更新」コマンドを追加し、以下のように設定します。
- 「処理の種類」を「追加」に設定
- 「対象テーブル」を「出庫管理」に設定
- 「新しいフィールド」ボタンを押下し以下の3項目を追加
- 「フィールド」に「[商品ID]」を選択
「値」に「=在庫管理.商品ID」を選択 - 「フィールド」に「[出庫数]」を選択
「値」に「=出庫数」を選択 - 「フィールド」に「[処理日時]」を選択
「値」に「=NOW()」と入力
- 「フィールド」に「[商品ID]」を選択
現在日時の取得
フィールドの更新値にはExcelと同じ関数を使用した式を指定することが出来ます。
上述の「=NOW() 」では、 Excel と同様に現在日時を取得します。利用可能な関数の一覧は、下記のページを参照してください。
>関数一覧(Forguncyヘルプ)

在庫管理テーブルに出庫情報を更新する処理を追加します。
トランザクションの子コマンド内の「テーブルデータの更新:追加 出庫管理」コマンドの下にもう一つ「テーブルデータの更新」コマンドを追加し、以下のように設定します。
- 「処理の種類」を「更新」に設定
- 「対象テーブル」を「在庫管理」に設定
- 「フィールド」に「在庫数」、値に「=在庫管理.在庫数-出庫数」と式を入力
- 「対象条件」の「新しい条件」をクリック
- 「フィールド」に「商品ID」を選択
- 条件に「=(等しい)」を選択
- 「値」にコマンドパラメーターの「在庫管理.商品ID」を設定

サーバーサイドコマンドの呼び出し処理の作成
作成したサーバーサイドコマンドを実装するため、「出庫処理」ページを開きます。
ページには出庫処理を行い、テーブルのデータ更新を行うための確定ボタンが配置してあります。
確定ボタンの「コマンド」を開きます。
既に出庫処理画面を閉じるための「ポップアップウィンドウの終了」コマンドが配置してあります。
確定ボタンを押下した際に、在庫数より大きい数を出庫しようとした場合には、エラーとして更新処理を行わないようにするための条件を設定していきます。
下図のようなイメージで各コマンドの設定を行います。

上述の条件分岐を実装するため、「条件分岐」コマンドを追加します。
その子コマンドのパラメーター「If [条件式]」部分を以下のように設定します。
- 「フィールド」に「=R7」と入力
- 「条件」に「>=(以上)」を選択
- 「値」に「=G7」と入力

現在の在庫が入力した出庫数以上という条件に当てはまった際の処理を実装します。
「If」の子コマンドに、「サーバーサイドコマンドの呼び出し」コマンドを追加し、以下のように設定します。
- 「サーバーサイドコマンド」に「出庫分を差し引いた在庫数を登録」を設定
- パラメーター名「商品ID」の値に「=G4」を設定
- パラメーター名「出庫数」の値に「=G7」を設定
さらに、この「サーバーサイドコマンドの呼び出し」コマンドの下に、元から配置されていた「ポップアップウィンドウの終了」コマンドをドラッグ&ドロップして条件分岐コマンドの子コマンドに変更します。
「コマンド」ウィンドウは下図のような状態になります。

現在の在庫が入力した出庫数以上という条件に当てはまらなかった際に、エラーメッセージを表示する処理を実装します。
先ほど追加した条件分岐の子コマンド「If =R7 >= (以上) =G7」を右クリックし、「Elseの追加」をクリックします。
追加されたElseの子コマンドに「メッセージの表示」コマンドを追加し、以下のように設定します。
- 「メッセージ」欄に「現在個数を超える数の出庫はできません。」と入力

結果確認用のページの確認
「在庫管理」ページを開きます。
ページには「在庫管理」テーブルをデータ連結したリストビューが配置してあります。
また、入庫処理および出庫処理を行うための「入庫」ボタンと「出庫」ボタンがリストビューの各行に配置されています。

結果を確認
プロジェクトをデバッグ実行し動作を確認します。
在庫管理画面の「出庫」ボタンを押下し、表示されたポップアップウィンドウで出庫処理を行います。
出庫管理テーブルと在庫管理テーブルが更新され、在庫管理画面のリストビューにおける在庫数の値が、元の在庫数から出庫処理で入力した値を差し引いた値に変わっていることが確認できます。

