DataColumn.Expression プロパティ
アセンブリ: System.Data (system.data.dll 内)

Dim instance As DataColumn Dim value As String value = instance.Expression instance.Expression = value
/** @property */ public String get_Expression () /** @property */ public void set_Expression (String value)
集約列内の値の計算または集約列の作成に使用する式。式の戻り型は列の DataType によって決定されます。

例外の種類 | 条件 |
---|---|
ArgumentException | |
FormatException | CONVERT 関数を使用すると式が文字列と評価されますが、その文字列には型パラメータに変換できる形式は含まれていません。 |
InvalidCastException | CONVERT 関数を使用する場合は、要求したキャストを実行できません。実行できるキャストの詳細については、以降のセクションで変換関数に関するトピックを参照してください。 |
ArgumentOutOfRangeException | SUBSTRING 関数を使用する場合は、開始引数が範囲外にあります。 または |
LEN 関数または TRIM 関数を使用する場合は、式が文字列と評価されません。これには Char と評価される式も含まれます。 |

Expression プロパティは、計算列を作成するときにも使用できます。たとえば、税額を計算するには、単価に特定地域の税率を乗算します。税率は地域によって異なるため、列に単一の税率を格納できません。その代わり、次の Visual Basic コードで示すとおり、Expression プロパティを使用して値を計算します。
DataSet1.Tables("Products").Columns("tax").Expression = "UnitPrice * 0.086"
このプロパティは、集約列の作成にも使用できます。計算値に類似していますが、集約は DataTable 内の行セット全体に基づいて演算を実行します。単純な例として、行セットで返された行数をカウントする場合があります。次の Visual Basic コードに示すように、特定の営業担当者が処理した取引の数をカウントするときなどに使用される方法です。
式の構文式を作成する場合は、ColumnName プロパティを使用して列を参照します。たとえば、ある列の ColumnName が "UnitPrice"、別の列が "Quantity" である場合、式は次のようになります。
"UnitPrice * Quantity"
![]() |
---|
式の中で列を使用している場合、その式はその列に対して依存関係を持つと言います。依存列の名前を変更したり、依存列を削除したりした場合でも、例外はスローされません。例外は、その時点で無効な式列がアクセスされたときにスローされます。 |
フィルタの式を作成する場合は、文字列を一重引用符で囲みます。
次に示す文字は特殊文字であるため、これらの文字を列名に使用する場合は、次に説明するようにエスケープする必要があります。
\t (タブ)
\r (キャリッジ リターン)
~
(
)
#
\
/
=
>
<
+
-
*
%
&
|
^
'
"
[
]
これらの文字のいずれかを列名に使用する場合は、列名を中かっこで囲む必要があります。たとえば、"Column#" という名前の列を式の中で使用する場合は、"[Column#]" と表記する必要があります。
角かっこは特殊文字であるため、列名に中かっこを使用する場合は、円記号 ("\") を使用して角かっこをエスケープする必要があります。たとえば、"Column[]" という名前の列は次のように表記します。
ユーザー定義の値
列値と比較するユーザー定義の値を式の中で使用できます。文字列値は一重引用符で囲む必要があります。日付値はシャープ記号 (#) で囲む必要があります。10 進数と指数表記は数値に使用できます。次に例を示します。
"Price <= 50.00"
"Birthdate < #1/31/82#"
列挙値が格納されている列の場合は、値を整数型にキャストします。次に例を示します。
"EnumColumn = 5"
Boolean 型の AND 演算子、OR 演算子、および NOT 演算子を使用して連結できます。かっこを使用して句をグループ化し、強制的にその句を優先させることができます。AND 演算子はほかの演算子より優先されます。次に例を示します。
(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'
<
>
<=
>=
<>
=
IN
+ (加算)
- (減算)
* (乗算)
/ (除算)
% (剰余)
文字列を連結するには、+ 文字を使用します。DataSet クラスの CaseSensitive プロパティの値によって、文字列の比較で大文字と小文字が区別されるかどうかが指定されます。ただし、DataTable クラスの CaseSensitive プロパティを使用してこの値をオーバーライドできます。
* と % はどちらも LIKE 比較の中でワイルドカード文字として使用できます。LIKE 句の中の文字列に * または % を使用する場合は、それらの文字を角かっこ ([]) で囲んでエスケープする必要があります。句の角かっこが含まれている場合は、角かっこ文字を角かっこで囲んで ([[]、[]] のように) エスケープする必要があります。ワイルドカードを使用できるのは、パターンの先頭と末尾、パターンの末尾、またはパターンの先頭です。次に例を示します。
ワイルドカード文字は文字列の途中に使用できません。たとえば、"te*xt" とは表記できません。
列名の前に Parent を付けて、式の中で親テーブルを参照できます。たとえば、Parent.Price は、親テーブル内の Price という名前の列を参照します。
列名の前に Child を付けて、式の中で子テーブル内の列を参照できます。ただし、子のリレーションシップから複数の行が返される可能性があるため、集約関数には子への参照を含める必要があります。たとえば、Sum(Child.Price) は、子テーブルの Price という名前の列の合計を返します。
テーブルに複数の子テーブルがある場合の構文は、Child(RelationName) です。たとえば、テーブルに Customers と Orders という名前の 2 つの子テーブルがあり、DataRelation オブジェクトの名前が Customers2Orders である場合、参照は次のようになります。
Avg(Child(Customers2Orders).Quantity)
Sum (和)
通常、集約はリレーションシップに沿って実行されます。集約式を作成するには、前述の「親子のリレーションシップの参照」で説明しているように、上記の関数のいずれかと子テーブル列を使用します。次に例を示します。
Avg(Child.Price)
Avg(Child(Orders2Details).Price)
単一のテーブルに対しても集約を実行できます。たとえば、"Price" という名前の列の数字の合計を作成するには、次の構文を使用します。
テーブルに行がない場合は、集約機能が null 参照 (Visual Basic では Nothing) を返します。
データ型は、いつでも、列の DataType プロパティをチェックして確認できます。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 およびその型自体との間でだけ強制的に変換できます。
例 : myDataColumn.Expression="Len(ItemName)"
ISNULL
ISNULL( expression , replacementvalue ) | |
expression -- チェックする式。 replacementvalue -- 式が null 参照 (Visual Basic では Nothing) の場合は replacementvalue が返されます。 |
例 : myDataColumn.Expression="IsNull(price, -1)"
例 : myDataColumn.Expression = "IIF(total>1000, 'expensive', 'dear')
\r?\n?\t?' ' ????????????????????? | |
TRIM( expression ) | |
expression -- 切り取る式。 |
SUBSTRING
SUBSTRING(expression, start, length) | |
expression -- 部分文字列のソース文字列。 |
例 : myDataColumn.Expression = "SUBSTRING(phone, 7, 8)"
![]() |
---|
Expression プロパティをリセットするには、プロパティに null 値または空の文字列を割り当てます。式が格納されている列に対して既定値が設定されている場合は、Expression プロパティをリセットすると、以前に値が格納されていたすべての行に既定値が割り当てられます。 |

DataTable 内に列を 3 つ作成する例を次に示します。2 番目の列と 3 番目の列には式が格納されています。2 番目の列では可変税率を使用して税額が計算され、3 番目の列ではその計算結果が最初の列の値に加算されます。結果として生成されたテーブルが DataGrid コントロールに表示されます。
Private Sub CalcColumns() Dim rate As Single = .0862 dim table as DataTable = New DataTable ' Create the first column. Dim priceColumn As DataColumn = New DataColumn With priceColumn .DataType = System.Type.GetType("System.Decimal") .ColumnName = "price" .DefaultValue = 50 End With ' Create the second, calculated, column. Dim taxColumn As DataColumn = New DataColumn With taxColumn .DataType = System.Type.GetType("System.Decimal") .ColumnName = "tax" .Expression = "price * 0.0862" End With ' Create third column Dim totalColumn As DataColumn = New DataColumn With totalColumn .DataType = System.Type.GetType("System.Decimal") .ColumnName = "total" .Expression = "price + tax" End With ' Add columns to DataTable With table.Columns .Add(priceColumn) .Add(taxColumn) .Add(totalColumn) End With Dim row As DataRow= table.NewRow table.Rows.Add(row) Dim view As New DataView view.Table = table DataGrid1.DataSource = view End Sub
private void CalcColumns() { DataTable table = new DataTable (); // Create the first column. DataColumn priceColumn = new DataColumn(); priceColumn.DataType = System.Type.GetType("System.Decimal"); priceColumn.ColumnName = "price"; priceColumn.DefaultValue = 50; // Create the second, calculated, column. DataColumn taxColumn = new DataColumn(); taxColumn.DataType = System.Type.GetType("System.Decimal"); taxColumn.ColumnName = "tax"; taxColumn.Expression = "price * 0.0862"; // Create third column. DataColumn totalColumn = new DataColumn(); totalColumn.DataType = System.Type.GetType("System.Decimal"); totalColumn.ColumnName = "total"; totalColumn.Expression = "price + tax"; // Add columns to DataTable. table.Columns.Add(priceColumn); table.Columns.Add(taxColumn); table.Columns.Add(totalColumn); DataRow row = table.NewRow(); table.Rows.Add(row); DataView view = new DataView(table); dataGrid1.DataSource = view; }

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からDataColumn.Expression プロパティを検索する場合は、下記のリンクをクリックしてください。

- DataColumn.Expression プロパティのページへのリンク