デフォルトでは、Magic xpaは メインソース のすべてのレコードを表示します。例えば、 APG を使用してプログラムを作成した場合、テーブルのすべてのレコードが表示されます。
しかし、通常はすべてのレコードを表示することはありません。例えば、削除フラグが設定されたレコードを表示しないようにしたり、代理人による販売内容のみ表示させるようにすることができます。また、1つのユニークなレコードを検索する場合もあります。
データビューでレコード数を制限するには、いくつかの方法があります。[範囲]カラムに直接範囲条件を設定する便利な方法もありますが、このようなオプションのほとんどは、[範囲]ウィンドウ( タスク→範囲/位置付 、または Ctrl+R )にあります。
範囲 …… データ項目で範囲を定義します。
式 …… 論理式で範囲を定義します。
SQL Where句 …… SQL Where 句を指定して範囲を定義します。
範囲設定についての詳細な方法を以下で説明します。
範囲の最大/最小を使用する
範囲指定の1番目の方法は、最大/最小の指定です。これは、最も簡単でよく利用される方法です。この場合、上限と下限のフィルタを指定し、指定された範囲内のレコードのみに絞ることを可能にします。文字型のカラムの場合、いくつかのマスク文字が指定できます。例えば、検索文字列の後に「*」が付加されている場合、移行の文字列を無視するように検索できます。
このような範囲指定方法は、一般的に、1種類(同じ状態、同じ国、同じ親レコードID)のレコードで絞り込んだり、最小と最大を同じ値に指定することで1つの特定のレコードを絞り込むために使用されます。
この例では、プログラムに渡された文字列で始まっているすべてのレコードを検索しています。 "The L" という文字列で始まるレコードが存在する場合、結果として表示されるレコードには、映画「The Load of the Rings」の全てのレコードが含まれています。
しかし、この方法では、文字列の中に存在するテキストを検索したり、より複雑な条件で検索することはできません。このような場合は、範囲式を使用する必要があります。
範囲指定を異なる場所から確認する
便宜上、範囲の最小/最大指定は、いくつか異なる場所で参照することができます。ここには、上記で設定された範囲条件をそれぞれの場所で表示させています。
データビュー内に表示される範囲カラム |
範囲ウィンドウ(Ctrl+R)で同じ範囲条件が指定されています。 |
カラム特性(Alt+Enter)での範囲指定 |
どのオプションを使用しても構いません。どこで指定しても同じ動作になります。
範囲式オプションを使用することで、より柔軟な範囲設定を行うことができます。この方法では、任意の式を入力することができ、式がTrueに評価された場合、レコードは選択されます。この例では、指定された値が文字列のどこに存在していても、Trueが返るような式を指定しています。
上記の例には、[範囲式]特性( 範囲/位置付→式タブ )に入力された式が表示されています。パラメータが空白の場合、式は常にTrueを返すため、すべてのレコードが表示されます。空白でない場合、指定された文字列が現在のレコードの文字列内に存在するかどうかをチェックするために、 InStr() 関数を使用しています。存在している場合、 InStr() 関数は正の数値(0より大きい数値)を返すため、該当するレコードはビューに含められます。
SQL Where句を使用する
SQLテーブルを使用している場合、通常の範囲指定(最大/最小)オプションは実行時にSQLステートメントに変換されます。しかし、SQLコードを[SQL Where]タブの[DB SQL]に入力することもできます。この方法の不利な点は、SQLコードが使用するDBMSに依存する場合があるということです。このため、DBMSを切り換えて使用する場合、移植性がなくなる可能性が発生します。
その代わりに Magic SQL式 を入力することができます。この場合、実行時に使用するDBMS用のSQLコードに変換されます。
関連プログラム:
オンライン/リッチクライアントサンプル(プログラム DV06/RDV06)