複数のテーブルを1つのコマンドで一括更新する

130‐01 コマンド| 基本編

Forguncyではコマンド機能の「テーブルデータの更新」コマンドを使って、テーブルデータの更新をすることができます。デフォルトでは1つの「テーブルデータの更新」コマンドにつき1つのテーブルを更新する設定になっていますが、実は複数のテーブルを指定することができます。
この方法で複数テーブルの一括更新を実装する場合、トランザクションが有効になるのでデータの不整合を防ぐこともできます。

ここでは、サンプルプロジェクトの営業用の日報システムを使い、日報データと営業案件の進捗状況を複数のテーブルに1つのコマンドで一括更新する方法について解説します。

プロジェクトファイルC130-01_bulk-update_b.fgcp 
C130-01_bulk-update_a.fgcp(実装済みプロジェクトファイル)

プロジェクトを確認する

処理の実装を始める前に、サンプルプロジェクトファイルの構成を確認します。
プロジェクトを開き、ナビゲーションウィンドウのテーブルを確認してください。「営業案件リスト」と「営業活動履歴」という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入れ替え提案 を選択
  • 対応内容:任意の値を選択
  • 確度:任意の値を選択
  • 商談メモ:任意の値を入力

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

>ノーコードWebアプリ開発ツール「Forguncy」

ノーコードWebアプリ開発ツール「Forguncy」

Forguncy(フォーガンシー)は複数のシステムと直接接続して参照・更新が行えるデータ管理機能と、Excel感覚でレイアウトができる画面デザイン機能を備えたノーコードWeb開発&運用プラットフォームです。基幹システムでは対応できず、仕方なくExcelやAccessで管理していた業務のサブシステム化を強力に支援します。

CTR IMG