サーバーサイド 活用編
本記事は、サーバーサイド処理の活用シナリオにある「出庫分を差し引いた在庫数を登録」の具体的な作成方法を解説したものです。
出庫処理を行う際に、出庫管理テーブルには出庫数を登録し、在庫管理テーブルには現在の在庫数から出庫分を差し引いた数を在庫数として登録します。
下記のプロジェクトファイルにはここで解説する出庫処理のほか、あらかじめ入庫処理が実装されています。

プロジェクトファイル (作成バージョン:8.0.5.0) | inventory-registration_before.fgcp inventory-registration_after.fgcp(実装済みプロジェクトファイル) |
1.プロジェクトを確認する
サンプルプロジェクトを開いてテーブルやページの確認を行います。
手順1-1.テーブルの確認
プロジェクトには「在庫管理」「出庫管理」「入庫管理」の3つのテーブルが存在します。
手順1-2.ページの確認
ページには在庫管理テーブルをデータ連結したリストビューが配置してあります。
また、入庫処理および出庫処理を行うための「入庫」ボタンと「出庫」ボタンがリストビューの各行に配置されています。
また、出庫処理ページには出庫処理を行い、テーブルのデータ更新を行うための確定ボタンが配置してあります。
2.サーバーサイドコマンドを作成する
サーバーサイドコマンドを作成します。
手順2-1.サーバーサイドコマンドの作成
リボンの[作成]メニューから[サーバーサイドコマンド]を選択しサーバーサイドコマンドマネージャー(サーバーサイドコマンドの設定ウィンドウ)を表示します。
新規に「出庫分を差し引いた在庫数を登録」という名前でサーバーサイドコマンドを作成します。

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

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

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

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

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

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

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

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

4.デバッグを実行
プロジェクトをデバッグ実行します。
手順4-1.デバッグを実行する
リボンの[ホーム]>[デバッグ]>[開始]ボタン、またはForguncy Builderの左上にある▶ボタンを押下してプロジェクトをデバッグ実行します。

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


Forguncyのコマンドについてもっと知る
Forguncyの開発スタートガイドやオンラインヘルプでは、今回使用したコマンドについてより詳しくご紹介しています。
こちらもぜひご活用ください。
>開発スタートガイド – 業務ロジックを実装する「コマンド」を知る