130‐01 コマンド| 基本編
Forguncyではコマンド機能の「テーブルデータの更新」コマンドを使って、テーブルデータの更新をすることができます。デフォルトでは1つの「テーブルデータの更新」コマンドにつき1つのテーブルを更新する設定になっていますが、実は複数のテーブルを指定することができます。
この方法で複数テーブルの一括更新を実装する場合、トランザクションが有効になるのでデータの不整合を防ぐこともできます。
ここでは、サンプルプロジェクトの営業用の日報システムを使い、日報データと営業案件の進捗状況を複数のテーブルに1つのコマンドで一括更新する方法について解説します。
プロジェクトを確認する
処理の実装を始める前に、サンプルプロジェクトファイルの構成を確認します。
プロジェクトを開き、ナビゲーションウィンドウのテーブルを確認してください。「営業案件リスト」と「営業活動履歴」という2つのテーブルが存在しています。
ユーザーがこのアプリケーションを使って営業日報を作成すると、そのデータは「営業活動履歴」テーブルに新規登録されます。それと同時に、日報に入力した案件の確度と最終コンタクト日のデータを用いて「営業案件リスト」の該当案件レコードが更新される処理を実装していきます。

ナビゲーションウィンドウのページには、「営業メニュー」「営業案件一覧」「営業日報一覧」「営業日報」の4つのページが存在します。
「営業メニュー」はこのアプリケーションのスタートページで、「営業案件一覧」ページと「営業日報一覧」ページに遷移するボタンが用意されています。
「営業案件一覧」は「営業案件リスト」のデータが一覧表示されるページです。「営業日報一覧」も同様に「営業活動履歴」のデータが一覧表示されますが、「営業日報の新規作成」ボタンとリストビュー内に「詳細」ボタンが用意されています。
どちらのボタンも押下すると「営業日報」ページがポップアップ形式で開きます。ページには、「営業活動履歴」テーブルと連結されている各種項目の入力用セルが配置されています。このページは、日報の新規登録と、登録済みの日報の詳細を表示する2つの役割を担っています。そのため、新規作成ボタンから開いた場合のみ「登録」ボタンが表示されるよう設定されています。
この時点では必須項目の入力チェックと、データ更新後に表示されるポップアップメッセージしか実装されていません。データの更新処理は実装されていないため、テーブルのCRUD処理は行われません。デバッグ実行して動作を確認したら、次に進みます。
テーブルデータの更新コマンドの実装
Forguncy Builderで「営業日報」ページを開きます。ページ下部の「登録」ボタンセルをクリックし、右ペインのセル型タブから「コマンド」のハイパーリンクをクリックします。
開いたコマンドウィンドウには、「条件分岐」コマンドが既に設定されています。「If」には条件が設定されており、その下に「メッセージの表示」コマンドと「コマンドの強制終了」コマンドが配置されています。このIfの条件が入力必須項目のチェックです。商談メモ欄以外のどれか1つでも未入力だった場合、「メッセージの表示」コマンドでそれをユーザーに知らせ、「コマンドの強制終了」で処理が終わります。
テーブルデータの更新は未入力項目が無い場合、つまり「Else」の条件に当てはまる場合に動くように設定します。

変数の設定
まずElse側の子コマンドである「メッセージの表示」コマンドの上に、「変数の設定」コマンドを2つ配置します。「営業日報」ページの「顧客名」と「案件名」の欄に連結されているフィールドはそれぞれ「顧客番号」と「案件番号」フィールドです。そのため、このページには「顧客名」と「案件名」のデータがありません。これらのデータはマスタ的な役割をしている「営業案件リスト」テーブルから、「変数の設定」コマンドを用いて取得します。
1つ目の「変数の設定」コマンドを以下のように設定します。
- 選択タブ
- 変数名:企業名
- 変数値:データベースのテーブルを参照
- 対象テーブル:営業案件リスト
- 選択:単一のフィールド
- 対象フィールド:顧客名
- クエリータブ
- フィールド:顧客番号
- 条件:=(等しい)
- 値:=F7
- 先頭レコードタブ
- 取得する先頭レコードの数:1

同様に、2つ目の「変数の設定」コマンドに案件名を取得する設定を以下のように行います。
- 選択タブ
- 変数名:案件名
- 変数値:データベースのテーブルを参照
- 対象テーブル:営業案件リスト
- 選択:単一のフィールド
- 対象フィールド:案件名
- クエリータブ
- フィールド:案件番号
- 条件:=(等しい)
- 値:=F9
- 先頭レコードタブ
- 取得する先頭レコードの数:1

テーブルデータの更新コマンドの設定
「変数の設定」コマンドの下に「テーブルデータの更新」コマンドを追加します。
初期状態では対象テーブルはドロップダウンから1つを選択して指定することしかできません。これを変更するために、下部の「トランザクションを有効にする」ハイパーリンクを押下します。

設定が有効になると、画面が下図のように変わります。

まず「営業活動履歴」テーブルにデータを新規登録するため、以下のように設定します。
- 処理の種類:追加
- 対象テーブル:営業活動履歴
- フィールドと値:
- 案件番号:=F9
- 案件名:=案件名
- 顧客名:=F7
- 企業名:=企業名
- 対応内容:=F11
- 確度:=F13
- 商談メモ:=F15
- 対応日:=F5
- 開始:=V5
- 終了:=AD5
- 対応者:=F3

緑色の+ボタンを押下することでCRUDを行うテーブルの数を増やせます。
「営業案件リスト」を更新するため、一度+ボタンを押下して次のように設定します。
- 処理の種類:更新
- 対象テーブル:営業案件リスト
- フィールドと値:
- 確度:=F13
- 最終コンタクト日:=F5
- 更新対象レコード:特定レコード
- フィールド:案件番号
- 条件:=(等しい)
- 値:=F9

テーブルデータの更新後、「営業日報」ページのポップアップを閉じ、「営業日報一覧」ページに戻るためElse側の「メッセージの表示」コマンドの下に「ポップアップウィンドウの終了」コマンドを追加します。
この時、忘れずに「親ページの連結データを最新の情報に更新する」にチェックを入れてください。

結果を確認
プロジェクトをデバッグ実行し動作を確認します。
開いた「営業メニュー」ページから「営業日報一覧」ページに遷移します。表示されている一覧データを確認したあと、「営業日報の新規作成」ボタンを押下しポップアップを開きます。
日報のデータを以下のように入力します。
- 担当者名:久留一 を選択
- 対応日:任意の日付
- 開始:任意の時間を選択
- 終了:任意の時間を選択
- 顧客名:ラディッシュネットソリューションズ を選択
- 案件:ラディッシュネットソリューションズ_PC入れ替え提案 を選択
- 対応内容:任意の値を選択
- 確度:任意の値を選択
- 商談メモ:任意の値を入力

入力後、登録ボタンを押下してポップアップを閉じます。
その後、「営業日報一覧」ページと「営業案件一覧」ページそれぞれから「営業活動履歴」テーブルと「営業案件リスト」テーブルの追加/更新されたデータを確認します。

