Skip to main content
INSERT数式は、主に現在のエントリフォームのデータを対象テーブルへ挿入するために使用します。例えば車両管理では、車両情報を車両管理システムに挿入できます。現在のエントリフォームのデータは、標準コンポーネントまたはサブフォームコンポーネントのいずれからでも取得できます。データソースがサブフォームコンポーネントの場合、明細行ごとに個別のレコードとして対象テーブルに挿入されます。同時に指定できるサブフォームコンポーネントは1つのみです。

構文

INSERT() 関数の構文は以下のとおりです。
  • 対象テーブル:データの挿入先となるフォーム。
  • 対象列:対象テーブル内のコンポーネント。INSERTでは、対象テーブル内の標準コンポーネントへのデータ挿入のみに対応しています。対象テーブル内のサブフォームへのデータ挿入には対応していません。
  • 対象値:

ユースケース

以下の2つのユースケースを通じて、INSERT() 関数への理解と活用を深めていただけます。

ケース1:対象値が標準コンポーネントから取得される場合

シナリオ
  • 製品テーブル:製品名、在庫数、製品カテゴリ、製品カテゴリ説明
  • 製品カテゴリテーブル:製品カテゴリ、製品カテゴリ説明
要件 製品テーブルに新しいレコードが追加されたとき、製品テーブルの製品カテゴリとカテゴリ説明を、新しいレコードとして製品カテゴリテーブルに挿入します。

ケース2:対象値がサブフォームコンポーネントから取得される場合

対象値にサブフォームコンポーネントが含まれている場合、対象テーブルに挿入されるレコード数は、サブフォームの行数と同じになります。 シナリオ
  • 現在のエントリフォームは仕入テーブルであり、仕入注文番号、仕入日、サブフォーム(製品名と仕入数量を含む)で構成されています。
  • 挿入先の対象テーブルは在庫テーブルであり、仕入注文番号、仕入日、製品名、仕入数量の4つのコンポーネントで構成されています。
要件 仕入テーブルで仕入データを送信し、サブフォームにN行含まれている場合、送信後に在庫テーブルへN件のレコードを挿入する必要があります。
  • 仕入テーブルのビジネス関連ルールで、INSERT関数を以下のように設定します。
  • 対象テーブルに在庫テーブル、対象列に「在庫テーブル.製品名」、対象値に「現在送信中のデータフォーム」配下のサブフォームにある製品名を設定します。
  • 在庫テーブルに挿入されるレコード数は、仕入テーブルのサブフォームに含まれる製品の数と同じになります。仕入注文番号や仕入日など、サブフォーム外の項目は、挿入されるすべてのレコードで同じ値になります。

注意事項

  • INSERTとUPSERTのユースケースの違い
INSERT数式は、対象テーブルに同じレコードが既に存在するかどうかにかかわらず、データを挿入します。場合によっては、既存のレコードを更新し、対象レコードが存在しない場合にのみ挿入したいこともあります。このようなシナリオでは、プレミアム数式のUPSERTを使用してください。
  • プレミアム数式では、以下のコンポーネントに対応しています。
  • INSERTで挿入できるレコード数の制限。
  • 対象値が複数のサブフォームコンポーネントから取得されるシナリオには、現時点で対応していません。
例えば、対象値が複数のサブフォームから取得され、サブフォームAにM行、サブフォームBにN行あるとき、対象テーブルに何件のレコードを挿入すべきでしょうか。M*N件でしょうか。その場合、データが重複してしまい、集計結果に誤りが生じます。