Filter プロパティの設定
フィルタの作成 への移動
Filter プロパティを使ってフィルタを作成するには、このプロパティにフィルタのテスト条件の文字列を設定します。たとえば、次の文では、データセットの State フィールドを検査して、カリフォルニア州を表す値が格納されているかどうかを確かめるフィルタを作成しています。
Dataset1.Filter := 'State = ' + QuotedStr('CA');
Dataset1->Filter = "State = 'CA'";
また、ユーザーから入力されたテキストを基に Filter の値を指定することもできます。たとえば、次の文では、編集ボックス内のテキストを Filter に割り当てています。
Dataset1.Filter := Edit1.Text;
Dataset1->Filter = Edit1->Text;
もちろん、ハードコードされたテキストとユーザー入力データの両方を基に文字列を作成することもできます。
Dataset1.Filter := 'State = ' + QuotedStr(Edit1.Text);
Dataset1->Filter = AnsiString("State = '") + Edit1->Text + "'";
フィルタ中に明示的に指定されない限り、空白のフィールド値は現れません。
Dataset1.Filter := 'State <> CA or State = BLANK';
Dataset1->Filter = "State <> 'CA' or State = BLANK";
メモ: Filter の値を指定した後にフィルタをデータセットに適用するには、Filtered プロパティを True に設定します。
フィルタでは、次の比較演算子と論理演算子を使って、フィールド値どうしのほか、フィールド値とリテラルや定数を比較できます。
フィルタに使用できる比較演算子と論理演算子:
演算子 | 意味 |
---|---|
< |
より小さい |
> |
より大きい |
>= |
以上 |
<= |
以下 |
= |
等しい |
<> |
等しくない |
AND |
2 つの文が両方とも True かどうかを検査する |
NOT |
次の文が True でないかどうかを検査する |
OR |
2 つの文の少なくとも一方が True かどうかを検査する |
+ |
数値どうしの加算、文字列どうしの連結、日付/時刻値への数値の加算(一部のドライバの場合のみ使用可能) |
- |
数値どうしの減算、日付どうしの減算、日付からの数値の減算(一部のドライバの場合のみ使用可能) |
* |
2 つの数値の乗算(一部のドライバの場合のみ使用可能) |
/ |
2 つの数値の除算(一部のドライバの場合のみ使用可能) |
* |
部分比較用のワイルドカード(FilterOptions に foPartialCompare が含まれている必要があります) |
これらの演算子を組み合わせると、かなり高度なフィルタを作成できます。たとえば、次の文では、2 つのテスト条件が満たされていることを確認してから、レコードの表示を認めます。
(Custno > 1400) AND (Custno < 1500);
メモ: フィルタ処理が有効な場合、ユーザーがレコードを編集した結果、そのレコードがフィルタのテスト条件に一致しなくなることがあります。そのため、次回そのレコードをデータセットから取得するときには、それが "なくなって" いるかもしれません。その場合は、フィルタ条件に一致した次のレコードが現在のレコードになります。