選択ステートメント

カーソル指定される表の中から条件を満たすレコードを選択します。


形式

  選択 [ <カーソル名> , ] <論理式>
, 索引自動判定 = する | しない
, 追加選択 = する | しない
, 空選択 = する | しない
, ウィンドウ表示 = する | 同じウィンドウ | しない
, レコード数 = <算術式> (V4.5追加)
  選択 [ <カーソル名> , ] 条件名指定
, 条件 = <条件名>
, 索引自動判定 = する | しない
, 追加選択 = する | しない
, 空選択 = する | しない
, ウィンドウ表示 = する | 同じウィンドウ | しない
, レコード数 = <算術式> (V4.5追加)
  選択 [ <カーソル名>, ] 条件式指定
, 条件 = <条件式>
, 索引自動判定 = する | しない
, 追加選択 = する | しない
, 空選択 = する | しない
, ウィンドウ表示 = する | 同じウィンドウ | しない
, レコード数 = <算術式> (V4.5追加)
  選択 [ <カーソル名> , ] 現在位置レコード | 現在位置グループ | セルカーソル位置レコード | セルカーソル位置グループ | 補集合 「セルカーソル〜」の別名「現〜」
, 空選択 = する | しない
, ウィンドウ表示 = する | 同じウィンドウ | しない
  選択 [ <カーソル名> , ] 実行時指定
, 空選択 = する | しない
, ウィンドウ表示 = する | 同じウィンドウ | しない
  選択 [ <カーソル名> , ] 解除 | 全解除
, ウィンドウ表示 = する | しない
  選択 [ <カーソル名> , ] 現在位置レコード除外 | セルカーソル位置レコード除外

パラメータ

<カーソル名>
選択を実行または解除するウィンドウを指定します。省略するとカレントカーソルが指すウィンドウが対象となります。
追加選択=する補集合選択解除 および 全解除 の場合は,選択ウィンドウを指すカーソルでなければなりません。
<論理式>
選択する条件を任意の論理式で指定します。条件式指定 の場合と異なり,式を直接記述します。
たとえば,[項目A]='ABC' のような単純な比較を行なう選択では,条件式指定 で記述した方が最適化が効果的に行なわれます。<論理式> による指定よりも 条件式指定 の形式を利用することをお勧めします。
条件名指定
表にあらかじめ登録してある探索条件を使用して選択するときに指定します。
<条件名>
表に登録してある探索条件の名前を文字列式で指定します。条件名指定 のときのみ意味をもちます。古いバージョンとの互換性のために,条件名= の形で書くこともできます。
条件式指定
任意の条件式を文字列式で指定して選択するときに指定します。選択の速度が重要な場合,<論理式> よりも効果的な最適化が行なわれる可能性があるので,この 条件式指定 による形式を使うことをお勧めします。
<条件式>
選択条件になる論理式を文字列式として指定します。ステートメント中に <論理式> を直接記述する場合と異なり,ここでの条件は文字列式で指定し,その値が論理式として評価されます。
現在位置レコード
<カーソル名> が指すレコードを1レコードだけ選択します。
注:
DBPro V3 までの「現レコード」パラメータは,後述の セルカーソル位置レコード が対応します。現在位置レコード で選択されるレコードは,セルカーソル位置のレコードではなく,<カーソル名> が指しているレコードですので注意してください。
現在位置グループ
<カーソル名> が指すレコードが属するグループのレコードを選択します。カード編集ウィンドウでなかったり,グループが定義されていなかったりしたときは,現在位置のレコードだけが選択されます。
セルカーソル位置レコード
<カーソル名> が指すウィンドウのセルカーソルがあるレコードを1レコードだけ選択します。
注:
DBPro V3 までの「現レコード」パラメータに対応します。
カーソル移動ステートメントや検索ステートメントで対象となるレコードを特定した後,そのレコード位置をカーソル変数に保存して別のカーソル移動ステートメントなどを実行すると,セルカーソルの位置は移動してしまいます。保存しておいたカーソル変数の値によってレコード選択したい場合は,現在位置レコード を使ってください。
セルカーソル位置グループ
<カーソル名> が指すカード編集ウィンドウで,セルカーソルのあるレコードが属するグループのレコードを選択します。カード編集ウィンドウでなかったり,グループが定義されていなかったりしたときは,セルカーソル位置のレコードだけが選択されます。
補集合
<カーソル名> が指す選択状態の表の補集合を選択します。これは,現在の選択表の直前の元になっている表に対する補集合となります。<カーソル名> で示される表が選択表でないときは$$CMDSTATEに201が返ります。
実行時指定
条件選択ダイアログを表示して,実行時に選択条件や使用索引を指定します。
解除
<カーソル名> が指す選択ウィンドウを閉じ,選択の元になった直前のウィンドウに戻ります。<カーソル名> は選択状態でなければなりません。
全解除
<カーソル名> が指す選択ウィンドウの一番元になっている実表のウィンドウまで戻り,その実表から現在の選択ウィンドウに至るまでの途中の選択ウィンドウをすべてクローズします。<カーソル名> は選択状態でなければなりません。
現在位置レコード除外
<カーソル名> が指すレコードを1レコードだけ選択除外します。<カーソル名> は選択状態でなければなりません。
セルカーソル位置レコード除外
<カーソル名> が指す選択ウィンドウから,そのウィンドウのセルカーソルがあるレコードを1レコードだけ選択除外します。<カーソル名> は選択状態でなければなりません。
索引自動判定
索引自動判定を行なうかどうかを指定します。
する高速な選択のために使用できる索引を自動的に判定して選択します。整列状態は現在のものと変わる可能性があります。
しない索引の自動判定はしないで,現在の整列状態のまま選択します。(既定値)
追加選択
<カーソル名> で示される選択状態のウィンドウに追加選択をすることができます。追加選択をすると,条件を満たすレコードが <カーソル名> で示される選択ウィンドウに追加されます。
する追加選択をします。このとき,<カーソル名> で示されるウィンドウは選択ウィンドウでなければなりません。選択ウィンドウでないときは$$CMDSTATEに201が返ります。
しない追加選択をせず,新しいウィンドウを開きます。(既定値)
追加選択中に中止ボタンが押されると,その時点までの選択結果は <カーソル名> で示される選択ウィンドウに追加されています。
空選択
条件を満たすレコードが一つもないとき,空の選択ウィンドウを作るかどうか指定します。空の選択表を作るときは,$$CMDSTATEに22が返ることはありません。
する空の選択ウィンドウを作ります。
しない空の選択ウィンドウを作りません。(既定値)
ウィンドウ表示
選択された結果をウィンドウに表示するか,しないか指定します。省略すると,選択前のウィンドウが表示されていれば する に,表示されていなければ しない になります。解除 および 全解除 のときに省略すると,戻り先のウィンドウがすでに存在する場合にはそのウィンドウの,戻り先のウィンドウが存在せずに現在のウィンドウに表示される場合には現在のウィンドウの表示状態と同じになります。
する新しいウィンドウが生成されて,そのウィンドウに表示されます。
同じウィンドウ同じウィンドウに表示されます。同じウィンドウに表示した場合,それまでの <カーソル名> が指していたウィンドウはいったん閉じられて,同じカーソルに新しいウィンドウが割り当てられたのと同じ効果になります。すなわち,以前のカーソルが別のカーソル変数に保存してあったとしても,その内容は不定になります。
しないウィンドウは表示されません。
レコード数 (V4.5追加)
選択されるレコード数を制限します。ここで指定したレコード数に達すると選択は終了します。指定しなかった場合や 0 を指定したときは,条件を満たすレコードがすべて選択されます。

結果

<カーソル名>被選択表のカーソルは変化しません。以前のレコードを指しています。ただし,解除 および 全解除 の場合は,クローズされて不定になります。
現在位置レコード除外 および セルカーソル位置レコード除外 ではセルカーソルの指す位置に移動します。
カレントカーソル選択されたレコードで構成される一時的な選択表を指すように設定されます。
解除 および 全解除 の場合は,戻り先のウィンドウを指します。戻り先のウィンドウが閉じられていなかったときは,そのウィンドウがアクティブになるだけであって,そのウィンドウのカーソル位置が設定されます。戻り先のウィンドウがすでに閉じられていた場合,これまでのウィンドウと同じウィンドウに表示されます。
$$CMDSTATE= 0正常終了
= 22条件を満たすレコードが一つもありません
= 23追加選択で条件を満たすレコードが見つかりましたが追加されたレコードはありませんでした
= 31選択ダイアログで[キャンセル]ボタンが押されました
= 32選択が途中で中止されました
= 201カーソルが正しくありません
= 221数値,時刻などのデータ表現が正しくない,または実行時指定で入力した式の形式が正しくありません
= 302指定された探索条件が登録されていません

構造コマンドパラメータ
 オープン @MASTER, 'MASTER.DPT'
 選択 @MASTER, [商品番号]=1000
IF $$CMDSTATE = 0 THEN  
 代入 @SELECT := @@
 印刷 @SELECT, 標準
 クローズ @SELECT
ENDIF  

解説

関連項目

→機能ガイド:選択と選択ウィンドウ
→論理式と論理値
→[探す]-[条件選択]
→[探す]-[選択解除]
→[探す]-[選択全解除]
→検索ステートメント
→項目選択ステートメント
→単一化選択ステートメント
→重複レコード選択ステートメント
→DPLの構文
→$$CMDSTATE一覧
DBProヘルプ目次へ