メインコンテンツまでスキップ
バージョン: 開発中

RELATE ONE

RELATE ONE ( manyTable : テーブル )
RELATE ONE ( manyField : フィールド {; choiceField : Field} )

引数型説明
manyTableテーブル→すべての自動リレーションを実行するテーブル
manyFieldフィールド→1テーブルへのマニュアルリレーションが引かれたフィールド
choiceFieldField→1テーブルの選択フィールド
履歴
リリース内容
11 SQL変更
<6初出

説明​

RELATE ONE には2つの形式があります。

一番目の形式、RELATE ONE(manyTable) は、カレントプロセスのmanyTable に対しすべての自動n対1リレーションを実行します。これはつまり、manyTable の自動n対1リレーションを持つフィールドごとに、コマンドはリレートしたテーブルのリレートしたレコードを選択します。これはプロセスにおいて、リレートしたテーブルのカレントレコードを変更します。

二番目形式RELATE ONE(manyField{;choiceField}) は、manyField に関連するレコードを検索します。自動リレートである必要はありません。レコードが存在する場合、RELATE ONE はリレート先レコードをメモリにロードし、これをそのテーブルのカレントレコードおよびカレントセレクションにします。

任意の引数のchoiceField は、リレート先テーブルのフィールドでなければなりません。choiceField は文字、テキスト、数値、日付、時間、またはブ-ルフィールドでなければなりません。具体的には、ピクチャまたはBLOB 型フィールドを選択することはできません。

choiceField が指定され、リレート先テーブルで複数のレコードを発見した場合、RELATE ONE はmanyField の内容と一致するレコードをリストに表示します。この選択リストは、左の欄にリレート先フィールドの内容を、右の欄にchoiceField の内容を表示します。

manyField の内容がワイルドカード記号 (@) で終了する場合、複数のレコードが見つかることがあります。一致するレコードが1件しかなければ、リストは表示されません。

以下の画像には、レコードが入力中で、選択リストが前面に表示されています。

選択リストを表示させるには以下のコマンドが使用されました:

 RELATE ONE([Personnel]Company;[Companies]Region)

ここではユーザーは、LLC で名前が始まる会社を探すために"LLC@"と入力し、またその場所についても調べています。

choiceField を指定することは、テーブルのリレートを設定する時点でワイルドカード選択を指定するのと同じことです。ワイルドカード選択に関する詳細は、4D Design Reference マニュアルを参照してください。

注: このコマンドはオブジェクト型フィールドをサポートしません。

例題​

ここに [Invoice] テーブルと*[Customers]* テーブルが2つのマニュアルリレートにより関連づけられています。ひとつは [Invoice]Bill to から*[Customers]Number* へ、もうひとつは*[Invoice]Ship to* から*[Customers]Number* にリレートされています。

以下は、[Invoice] テーブルのフォームが"Bill to"と "Send to"の情報を表示している様子です:

両方のリレート先は同じ[Customers]テーブルになっており、同時に請求先と発送先の情報を得ることは出来ません。フォームに両方の住所を表示するためには、変数とRELATE ONE コマンドを使用します。 もし、[Customers]フィールドを表示に使用したなら、一方のリレートから得られたデータしか表示されません。

以下は[Invoice]Bill toと[Invoice]Ship toフィールドのオブジェクトメソッドです。これらはフィールドに入力されると実行されます。

[Invoice]Bill to フィールドのオブジェクトメソッド:

 RELATE ONE([Invoice]Bill to)
 vAddress1:=[Customers]Address
 vCity1:=[Customers]City
 vState1:=[Customers]State
 vZIP1:=[Customers]ZIP

[Invoice]Ship to フィールドのオブジェクトメソッド:

 RELATE ONE([Invoice]Ship to)
 vAddress2:=[Customers]Address
 vCity2:=[Customers]City
 vState2:=[Customers]State
 vZIP2:=[Customers]ZIP

システム変数およびセット​

コマンドが正しく実行されリレーとされたレコードがロードされると、OK システム変数は1 に設定されます。ユーザが(リレートされたレコードが更新されたときに表示される) レコード選択ダイアログボックスでキャンセルをクリックすると、OK 変数は0 に設定されます。

参照​

OLD RELATED ONE
RELATE MANY

プロパティ​

コマンド番号42
スレッドセーフであるno
システム変数を更新するOK
カレントレコードを変更する
カレントセレクションを変更する