クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
.NET 開発
以前のバージョン
.NET Framework SDK 2.0
System.Data
DataColumn クラス
DataColumn プロパティ
 Expression プロパティ
すべて縮小/すべて展開 すべて縮小
このページは次のバージョンについて記述しています。
Microsoft Visual Studio 2005/.NET Framework 2.0

その他のバージョンについては、以下の情報を参照してください。
.NET Framework クラス ライブラリ
DataColumn.Expression プロパティ

行のフィルタ処理、列内の値の計算、または集約列の作成に使用する式を取得または設定します。

名前空間: System.Data
アセンブリ: System.Data (system.data.dll 内)

Visual Basic (宣言)
Public Property Expression As String
Visual Basic (使用法)
Dim instance As DataColumn
Dim value As String

value = instance.Expression

instance.Expression = value
C#
public string Expression { get; set; }
C++
public:
property String^ Expression {
    String^ get ();
    void set (String^ value);
}
J#
/** @property */
public String get_Expression ()

/** @property */
public void set_Expression (String value)
JScript
public function get Expression () : String

public function set Expression (value : String)

プロパティ値

集約列内の値の計算または集約列の作成に使用する式。式の戻り型は列の DataType によって決定されます。
例外の種類条件

ArgumentException

AutoIncrement プロパティまたは Unique プロパティが true に設定されます。

FormatException

CONVERT 関数を使用すると式が文字列と評価されますが、その文字列には型パラメータに変換できる形式は含まれていません。

InvalidCastException

CONVERT 関数を使用する場合は、要求したキャストを実行できません。実行できるキャストの詳細については、以降のセクションで変換関数に関するトピックを参照してください。

ArgumentOutOfRangeException

SUBSTRING 関数を使用する場合は、開始引数が範囲外にあります。

または

SUBSTRING 関数を使用する場合は、長さ引数が範囲外にあります。

Exception

LEN 関数または TRIM 関数を使用する場合は、式が文字列と評価されません。これには Char と評価される式も含まれます。

Expression プロパティは、計算列を作成するときにも使用できます。たとえば、税額を計算するには、単価に特定地域の税率を乗算します。税率は地域によって異なるため、列に単一の税率を格納できません。その代わり、次の Visual Basic コードで示すとおり、Expression プロパティを使用して値を計算します。

DataSet1.Tables("Products").Columns("tax").Expression = "UnitPrice * 0.086"

このプロパティは、集約列の作成にも使用できます。計算値に類似していますが、集約は DataTable 内の行セット全体に基づいて演算を実行します。単純な例として、行セットで返された行数をカウントする場合があります。次の Visual Basic コードに示すように、特定の営業担当者が処理した取引の数をカウントするときなどに使用される方法です。

 DataSet1.Tables("Orders").Columns("OrderCount").Expression = "Count(OrderID)"

式の構文

式を作成する場合は、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) です。たとえば、テーブルに CustomersOrders という名前の 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 は、ByteSByteInt16Int32Int64UInt16UInt32UInt64String、およびその型自体との間でだけ強制的に変換できます。Char は、Int32UInt32、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 プロパティをリセットすると、以前に値が格納されていたすべての行に既定値が割り当てられます。

DataTable 内に列を 3 つ作成する例を次に示します。2 番目の列と 3 番目の列には式が格納されています。2 番目の列では可変税率を使用して税額が計算され、3 番目の列ではその計算結果が最初の列の値に加算されます。結果として生成されたテーブルが DataGrid コントロールに表示されます。

Visual Basic
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
C#
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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。

.NET Framework

サポート対象 : 2.0、1.1、1.0

.NET Compact Framework

サポート対象 : 2.0、1.0
コミュニティ コンテンツ   コミュニティ コンテンツとは
新しいコンテンツの追加 RSS  注釈
TRIM の説明が化けています。      魔界の仮面弁士   |   編集   |   履歴の表示

TRIM の説明が『\r?\n?\t?' ' ?????????????????????』と化けていますが、これは
「\r, \n, \t, ' ' といった、先頭および末尾のブランク文字を削除します。」のような内容です。

なお、原文は『Removes all leading and trailing blank characters like \r, \n, \t, ' '』です。

フラグの設定 ContentBug
Processing
© 2009 Microsoft Corporation. All rights reserved. 使用条件 | 商標 | プライバシー
Page view tracker