表示されるレコードの制限

提供: RAD Studio
移動先: 案内検索

クライアント データセットを使用したデータの取り扱い への移動


存在するデータの一部しかユーザーが使用できないよう一時的に制限するために、アプリケーションで範囲とフィルタを使用することができます。範囲やフィルタを適用すると、クライアント データセットは、インメモリ キャッシュ内のすべてのデータを表示しなくなります。その代わりに、範囲やフィルタの条件を満たしたデータだけを表示します。範囲の使い方の詳細は、「範囲でのレコードの制限」を参照してください。

ほとんどのデータセットでは、フィルタ文字列を解析して SQL コマンドが作成され、それがデータベース サーバーで実装されます。そのため、サーバーの SQL ダイアレクトによって、フィルタ文字列で使用できる操作が制限されます。クライアント データセットでは独自にフィルタをサポートしており、他のデータセットよりも多くの操作を使用できます。たとえば、クライアント データセットを使用している場合には、部分文字列を返す文字列演算子や、日付/時刻値を解析する演算子など、多くのものをフィルタ式で使用することができます。また、クライアント データセットでは、BLOB フィールドや、ADT フィールドおよび配列フィールドなどの複合フィールド型に、フィルタを適用することもできます。

クライアント データセットがフィルタ内で使用できるさまざまな演算子や関数と、フィルタをサポートする他のデータセットとの比較を、以下の表に示します。

クライアント データセットでサポートされているフィルタ:

演算子または関数 他のデータセットでのサポート コメント

比較演算子

=

State = 'CA'

<>

State <> 'CA'

>=

DateEntered >= '1/1/1998'

<=

Total <= 100,000

>

Percentile > 50

<

Field1 < Field2

BLANK

State <> 'CA' or State = BLANK

空レコードは、フィルタに明示的に含めない限り表示されません。

IS NULL

Field1 IS NULL

×

IS NOT NULL

Field1 IS NOT NULL

×

論理演算子

and

State = 'CA' and Country = 'US'

or

State = 'CA' or State = 'MA'

not

not (State = 'CA')

算術演算子

+

Total + 5 > 100

ドライバに依存

数値、文字列、または日付(時刻)+ 数値に適用されます。

-

Field1 - 7 <> 10

ドライバに依存

数値、日付、または日付(時刻)- 数値に適用されます。

Discount * 100 > 20

ドライバに依存

数値にのみ適用されます。

/

Discount > Total / 5

ドライバに依存

数値にのみ適用されます。

文字列関数

Upper

Upper(Field1) = 'ALWAYS'

×

Lower

Lower(Field1 + Field2) = 'josp'

×

Substring

Substring(DateFld,8) = '1998'Substring(DateFld,1,3) = 'JAN'

×

値は、第 2 引数の位置から終わりまで、または第 3 引数の文字数分までになります。最初の文字の位置は 1 です。

Trim

Trim(Field1 + Field2)Trim(Field1, '-')

×

先頭と末尾にある第 3 引数で指定された文字を削除します。第 3 引数がなければ、空白を削除します。

TrimLeft

TrimLeft(StringField)TrimLeft(Field1, '$') <>

×

Trim の項を参照。

TrimRight

TrimRight(StringField)TrimRight(Field1, '.') <>

×

Trim の項を参照。

日付/時刻関数

Year

Year(DateField) = 2000

×

Month

Month(DateField) <> 12

×

Day

Day(DateField) = 1

×

Hour

Hour(DateField) < 16

×

Minute

Minute(DateField) = 0

×

Second

Second(DateField) = 30

×

GetDate

GetDate - DateField > 7

×

現在の日付と時刻を表します。

Date

DateField = Date(GetDate)

×

日付/時刻値の日付部分を返します。

Time

TimeField > Time(GetDate)

×

日付/時刻値の時刻部分を返します。

その他

Like

Memo LIKE '%filters%'

×

ESC 句がないことを除き、SQL-92 と同じように動作します。BLOB フィールドに適用される場合、大文字と小文字を区別するかどうかは FilterOptions で決まります。

In

Day(DateField) in (1,7)

×

SQL-92 と同じように動作します。第 2 引数は、どれも同じ型の値のリストです。

*

State = 'M*'

部分比較用のワイルドカードです。


範囲やフィルタを適用した場合でも、クライアント データセットはメモリ内にすべてのレコードを格納したままです。範囲やフィルタは、クライアント データセットのデータのナビゲーションや表示を行うコントロールがどのレコードを使用できるかを決めるだけです。

メモ: プロバイダからデータを取得するときに、プロバイダにパラメータを渡すことで、クライアント データセットに格納されるデータを制限することもできます。詳細は、「パラメータによるレコードの制限」を参照してください。

関連項目