ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
RELATE ONE
|
RELATE ONE ( manyTable | Field {; choiceField} ) | ||||||||
引数 | 型 | 説明 | ||||||
manyTable | Field | テーブル, フィールド |
![]() |
すべての自動リレーションを実行するテーブル, または1テーブルへのマニュアルリレーションが引かれたフィールド | |||||
choiceField | フィールド |
![]() |
1テーブルの選択フィールド | |||||
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に設定されます。
プロダクト: 4D
テーマ: リレーション
番号:
42
変更: 4D v11 SQL
ランゲージリファレンス ( 4D v20 R7)