式を作成する場合は、ColumnName プロパティを使用して列を参照します。たとえば、ある列の ColumnName が "UnitPrice"、別の列が "Quantity" である場合、式は次のようになります。
"UnitPrice * Quantity"
メモ |
|---|
| 式の中で列を使用している場合、その式はその列に対して依存関係を持つと言います。依存列の名前を変更したり、依存列を削除したりした場合でも、例外はスローされません。例外は、その時点で無効な式列がアクセスされたときにスローされます。 |
フィルタの式を作成する場合は、文字列を一重引用符で囲みます。
"LastName = 'Jones'"
次に示す文字は特殊文字であるため、これらの文字を列名に使用する場合は、次に説明するようにエスケープする必要があります。
\n (改行)
\t (タブ)
\r (キャリッジ リターン)
~
(
)
#
\
/
=
>
<
+
-
*
%
&
|
^
'
"
[
]
これらの文字のいずれかを列名に使用する場合は、列名を中かっこで囲む必要があります。たとえば、"Column#" という名前の列を式の中で使用する場合は、"[Column#]" と表記する必要があります。
Total * [Column#]
角かっこは特殊文字であるため、列名に中かっこを使用する場合は、円記号 ("\") を使用して角かっこをエスケープする必要があります。たとえば、"Column[]" という名前の列は次のように表記します。
Total * [Column[\]]
(2 番目の角かっこだけをエスケープします。)
ユーザー定義の値
列値と比較するユーザー定義の値を式の中で使用できます。文字列値は一重引用符で囲む必要があります。日付値はシャープ記号 (#) で囲む必要があります。10 進数と指数表記は数値に使用できます。次に例を示します。
"FirstName = 'John'"
"Price <= 50.00"
"Birthdate < #1/31/82#"
列挙値が格納されている列の場合は、値を整数型にキャストします。次に例を示します。
"EnumColumn = 5"
演算子
Boolean 型の AND 演算子、OR 演算子、および NOT 演算子を使用して連結できます。かっこを使用して句をグループ化し、強制的にその句を優先させることができます。AND 演算子はほかの演算子より優先されます。次に例を示します。
(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'
比較式を作成する場合は、次の演算子を使用できます。
<
>
<=
>=
<>
=
IN
LIKE
式の中で次の算術演算子も使用できます。
+ (加算)
- (減算)
* (乗算)
/ (除算)
% (剰余)
文字列演算子
文字列を連結するには、+ 文字を使用します。DataSet クラスの CaseSensitive プロパティの値によって、文字列の比較で大文字と小文字が区別されるかどうかが指定されます。ただし、DataTable クラスの CaseSensitive プロパティを使用してこの値をオーバーライドできます。
ワイルドカード文字
* と % はどちらも LIKE 比較の中でワイルドカード文字として使用できます。LIKE 句の中の文字列に * または % を使用する場合は、それらの文字を角かっこ ([]) で囲んでエスケープする必要があります。句の角かっこが含まれている場合は、角かっこ文字を角かっこで囲んで ([[]、[]] のように) エスケープする必要があります。ワイルドカードを使用できるのは、パターンの先頭と末尾、パターンの末尾、またはパターンの先頭です。次に例を示します。
"ItemName LIKE '*product*'"
"ItemName LIKE '*product'"
"ItemName LIKE 'product*'"
ワイルドカード文字は文字列の途中に使用できません。たとえば、"te*xt" とは表記できません。
親子のリレーションシップの参照
列名の前に Parent を付けて、式の中で親テーブルを参照できます。たとえば、Parent.Price は、親テーブル内の Price という名前の列を参照します。
列名の前に Child を付けて、式の中で子テーブル内の列を参照できます。ただし、子のリレーションシップから複数の行が返される可能性があるため、集約関数には子への参照を含める必要があります。たとえば、Sum(Child.Price) は、子テーブルの Price という名前の列の合計を返します。
テーブルに複数の子テーブルがある場合の構文は、Child(RelationName) です。たとえば、テーブルに Customers と Orders という名前の 2 つの子テーブルがあり、DataRelation オブジェクトの名前が Customers2Orders である場合、参照は次のようになります。
Avg(Child(Customers2Orders).Quantity)
集約
サポートされる集約型は次のとおりです。
Sum (和)
Avg (平均)
Min (最小)
Max (最大)
Count (カウント)
StDev (統計標準偏差)
Var (統計分散)
通常、集約はリレーションシップに沿って実行されます。集約式を作成するには、前述の「親子のリレーションシップの参照」で説明しているように、上記の関数のいずれかと子テーブル列を使用します。次に例を示します。
Avg(Child.Price)
Avg(Child(Orders2Details).Price)
単一のテーブルに対しても集約を実行できます。たとえば、"Price" という名前の列の数字の合計を作成するには、次の構文を使用します。
Sum(Price)
メモ |
|---|
| 単一のテーブルを使用して集約を作成する場合は、グループ化基準機能は無効になります。その代わり、すべての行でその列に同じ値が表示されます。 |
テーブルに行がない場合は、集約機能が null 参照 (Visual Basic では Nothing) を返します。
データ型は、いつでも、列の DataType プロパティをチェックして確認できます。Convert 関数を使用して、以降のセクションで示すようにデータ型を変換することもできます。
FUNCTIONS
次の関数もサポートされます。
CONVERT
| 説明 | 特定の式を指定した .NET Framework 型に変換します。 |
| 構文 | Convert( expression , type ) |
| 引数 |
expression -- 変換する式。
type -- 値の変換先の .NET Framework 型。 |
例 : myDataColumn.Expression="Convert(total, 'System.Int32')"
次の例外を除き、すべての変換が有効です。Boolean は、Byte、SByte、Int16、Int32、Int64、UInt16、UInt32、UInt64、String、およびその型自体との間でだけ強制的に変換できます。Char は、Int32、UInt32、String、およびその型自体との間でだけ強制的に変換できます。DateTime は、String およびその型自体との間でだけ強制的に変換できます。TimeSpan は、String およびその型自体との間でだけ強制的に変換できます。
LEN
| 説明 | 文字列の長さを取得します。 |
| 構文 | LEN( expression ) |
| 引数 |
expression -- 評価する文字列。 |
例 : myDataColumn.Expression="Len(ItemName)"
ISNULL
| 説明 | 式をチェックし、チェックした式または置換値のどちらかを返します。 |
| 構文 | ISNULL( expression , replacementvalue ) |
| 引数 |
expression -- チェックする式。 replacementvalue -- 式が null 参照 (Visual Basic では Nothing) の場合は replacementvalue が返されます。 |
例 : myDataColumn.Expression="IsNull(price, -1)"
IIF
| 説明 | 論理式の結果に応じて 2 つの値のどちらかを取得します。 |
| 構文 | IIF( expr , truepart , falsepart ) |
| 引数 | expr -- 評価する式。 truepart -- 式が true の場合に返される値。 falsepart -- 式が false の場合に返される値。 |
例 : myDataColumn.Expression = "IIF(total>1000, 'expensive', 'dear')
TRIM
| 説明 | \r?\n?\t?' ' ????????????????????? |
| 構文 | TRIM( expression ) |
| 引数 |
expression -- 切り取る式。 |
SUBSTRING
| 説明 | 文字列内の指定した位置を開始位置として、指定した長さの部分文字列を取得します。 |
| 構文 | SUBSTRING(expression, start, length) |
| 引数 |
expression -- 部分文字列のソース文字列。 start -- 部分文字列の開始位置を指定する整数。
length -- 部分文字列の長さを指定する整数。 |
例 : myDataColumn.Expression = "SUBSTRING(phone, 7, 8)"
メモ |
|---|
| Expression プロパティをリセットするには、プロパティに null 値または空の文字列を割り当てます。式が格納されている列に対して既定値が設定されている場合は、Expression プロパティをリセットすると、以前に値が格納されていたすべての行に既定値が割り当てられます。 |