リレーション

4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次

version 6.0


この章のコマンド、特にRELATE ONERELATE MANYは自動リレートおよび自動でないリレートを設定、管理するものです。この章のコマンドを使用する前に、テーブル間のリレートの作成について4D Design Referenceマニュアルを参照してください。

テーブルの自動リレートを利用するコマンド


2つのテーブルは自動リレートで関連付けることができます。一般的にテーブルの自動リレートは、リレート先テーブルのレコードをロード、または選択するために使用します。リレートを使用することで多くの処理を実行することができます。

以下のような処理が含まれます:

・データ入力

・出力フォームによる画面上のリスト出力

・帳票の印刷

・セレクションに対する検索、ソート、フォーミュラでの更新

性能を最大限に引き出すために、4Dは1レコードがテーブルのカレントレコードになる場合にのみ自動リレーションを実行します。上記のリストに示した各操作を行ったときに、以下の原則に従って、リレートレコードがロードされます:

・リレーションがリレートしたテーブルの1つのレコードのみを選択する場合、そのレコードはディスクからロードされます。

・リレーションがリレートしたテーブルの複数のレコードを選択する場合、新しいレコードセレクションがそのテーブルに作成され、セレクション内の先頭レコードがディスクからロードされます。

以下の図のテーブルストラクチャを例にとってみましょう。[Employees]テーブルをデータ入力のためにロードした場合は、[Companies]テーブルからリレート先レコードが選択され、ロードされます。同様に[Companies]テーブルをロードしてデータ入力用に表示した場合には、[Employees]テーブルから関連するレコードが選択されます。

上図において、[Employees]テーブルはnテーブルとして参照され、[Companies]テーブルは1テーブルとして参照されます。これを解かりやすくするために、多くの人が1つの会社に関連しており、各会社には多くの人がいると考えてください。

同様に[Employees]Companyフィールドはnフィールドとして参照され、[Companies]Nameフィールドは1フィールドとして参照されます。

リレートフィールドが、いつもユニーク(重複しない)とは限りません。例えば、[Companies]Nameフィールドは同じ値を含んだ会社のレコードをいくつも持っているかもしれません。こういう場合は、常にユニークであるリレート先テーブルの別のフィールドでリレート作成することにより、簡単に処理することができます。このようなフィールドの例として、会社IDフィールドがあります。

以下の表に掲げたコマンドは、コマンドの実行中にリレート先のリレートレコードをロードするために自動リレートを使用します。これらのコマンドはすべてn対1の自動リレートを使用します。1対nの欄が○になっているコマンドのみが自動の1対nリレートに対応します。

コマンド1対n
ADD RECORD
ADD SUBRECORD ×
APPLY TO SELECTION ×
DISPLAY SELECTION ×
EXPORT DIF ×
EXPORT SYLK ×
EXPORT TEXT ×
EXPORT DATA ×
MODIFY RECORD
MODIFY SUBRECORD ×
MODIFY SELECTION ○ (<データ入力中)
ORDER BY ×
ORDER BY FORMULA ×
QUERY BY FORMULA
QUERY SELECTION
QUERY
PRINT LABEL ×
PRINT SELECTION
QR REPORT ×
SELECTION TO ARRAY ×
SELECTION RANGE TO ARRAY ×

テーブルリレートを実行するコマンド


自動リレートとは、コマンドがレコードをロードするたびに、そのテーブルに関連する1つまたは複数のレコードを自動的に選択するという意味ではありません。レコードをロードするコマンドを使用した後で、リレート先データにアクセスする必要がある場合、RELATE ONERELATE MANYを使用して、リレート先レコードを明示的に選択することが必要なケースもあります。

前ぺ−ジの表に掲げたコマンドの一部(QUERYコマンド等)は、処理の終了後にカレントレコードをロードします。この場合、ロードされたレコードは、リレート先の関連するレコードを自動的には選択しません。ここでも、リレート先データにアクセスする必要がある場合、RELATE ONERELATE MANYを使用してリレート先レコードを明示的に選択する必要があります。

参照

CREATE RELATED ONE, GET AUTOMATIC RELATIONS, GET FIELD RELATION, OLD RELATED MANY, OLD RELATED ONE, RELATE MANY, RELATE MANY SELECTION, RELATE ONE, RELATE ONE SELECTION, SAVE RELATED ONE, SET AUTOMATIC RELATIONS, SET FIELD RELATION.


4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次