コマンドを学ぼう: リンク(Q=照会)

マスタファイルから名称を取り出すときなどに使われます。
一般的なパターンとしては、下図のような使い方かと思います。
リンクQ

以下、コマンドの設定について説明しておきます(左から順に)。

コマンド リンク Q=照会
テーブル ズームしてリンクするテーブルを選択すると、テーブル番号が入ります。
テーブル番号が分かっているときは、直接入力しても構いません。
また、内容欄にはテーブル名が自動的に表示されます。※@
インデック ズームしてリンクデータを検索するためのインデックスを選択します。
インデックス番号が分かっているときは、直接入力しても構いません。
指定するとインデックス項目が自動的にセレクトコマンドで追加されます 。
(この例では「コード」です。)
インデックスを使った検索方向を選択します。
A=昇順 or D=降順
戻り値を設定することができます。省略可。
一般的には論理型の変数を使います(数値型で0か1かの判定でも可)。
位置付け指定(A)された値が取得できれば「True」、取得できなければ「False」が、その変数に入ります。
条件 V9以降では、リンクコマンドを実行するかしないかを設定できます。
V8は、そうではありません(リンクの実行制御ではない)。確認リンクを条件によっては照会リンクの動作にするというものでしたが、多くの場合、勘違いされていたようです。
通常は、「Yes」(デフォルト)で使います。

<押さえておきたい照会リンクのツボ>
1.リンクコマンドによって取り出されるデータは0件か1件
1回のリンクコマンドによって取り出されるデータは基本的に1件です。
勿論、位置付けに該当するデータが無ければ0件ですが、 位置付けの指定が片方だけなどで、条件に該当するレコードが複数あったとしても、その中の最初の1件だけが取り出されます。
該当レコードを全て取得するわけではありません。

2.照会リンクの項目は更新できる
照会リンクという呼び方に惑わされてはいけません。
項目更新コマンドを使えばリンクデータも更新できますし、 セレクトコマンドの条件を「Yes」にしてフォームに配置すれば手入力によるデータ書き換えも可能です。
(普通、そんなことはしませんけど。)
そのため、レコードロックの対象にもなります。
本当に照会だけ(リードオンリー)で使いたいのであれば、DBテーブルの設定でアクセス欄を「R=読込」にしておきます。

3.片方だけの位置付け
多くの場合、位置付け式は、開始値(左)と終了値(右)の両方に同じ式番号を設定します。
これによって、式の値と同じデータを取得することができます。
しかし、場合によっては、開始値だけとか、終了値だけを指定する使い方も可能です。
昇順で使うときは、開始値だけを指定して、この値以上で近いもの(最初のデータ)、となりますし、 降順であれば、終了値だけを指定して、この値以下で近いもの(降順検索で最初のデータ)、となります。
例えば、消費税率マスタを使うようなときは、売上日と消費税率の適用開始日を比較して近いものを取りたいわけですから、 消費税率マスタを適用開始日の降順でリンクして、位置付けの終了値に売上日を指定すると思い通りの結果を得られます。

4.位置付け式なし
位置付け式を使わない照会リンクも間違いではありません。
この場合、昇順であれば最小値、降順であれば最大値を取得することができます。